標籤:

python簡明教程里關於zip的那一節無論怎麼弄都無法壓縮成功,系統是windows?

直接在dos下輸入zip,可以顯示成功,但是一旦用python調用就顯示『zip不是內部或外部命令』,環境變數已經加入了,但是還是不行,百度的方法均試,還是不行,求大神指教啊

附上代碼:

import os

import time

# 1. The files and directories to be backed up are specified in a list.

source = [rC:123, rD:sq]

# If you are using Windows, use source = [rC:Documents, rD:Work] or something like that

# 2. The backup must be stored in a main backup directory

target_dir = F:\beifen\

# Remember to change this to what you will be using

# 3. The files are backed up into a zip file.

# 4. The name of the zip archive is the current date and time

target = target_dir + time.strftime(%Y%m%d%H%M%S) + .zip

# 5. We use the zip command (in Unix/Linux) to put the files in a zip archive

zip_command = "zip -q %s %s" % (target, .join(source))

# Run the backup

if os.system(zip_command) == 0:

print Successful backup to, target

else:

print Backup FAILED


pyCharm軟體重啟搞定


這可能是python的搜索路徑和cmd搜索路徑不同造成的。

你找到ZIP所在的絕對位置,os.system的時候把路徑帶全了試試。


我今天也碰到了這個問題,進來這個問題後試了下其他答主的方法,安裝了WinRAR和7-zip,設置了環境變數,最後也沒成功。然後在安裝WinRAR後,看了下其中的幫助文件:

其中從命令行壓縮文件的操作方法如下:

依此修改我的代碼如下:

import os

import time

source=[rG:HbaseDataaa]

target_dir=rG:ackup

target=target_dir+time.strftime(%Y%m%d%H%M%S)+.rar

zip_command=WinRAR A %s %s%(target,.join(source))

if os.system(zip_command)==0:

print Successful backup to,target

else:

print Backup FAILED

其中關鍵的一行zip_command=WinRAR A %s %s%(target,.join(source)),通過嚴格對比幫助文件中的語法修改,程序最終正確運行,文件得以壓縮:


zip.exe 一直不成功,搞了好幾個小時,按照 @石頭三顆 @王家 @匿名用戶 方法都不行。

後來使用Rar.exe 就成功了!!!

不知道為什麼,初學者。

建議大家用rar寫吧。貼上自己的代碼和運行結果:

import os

import time

source=[rD:QQDownloadMet_Mast_A.txt,rD:QQDownload1203985063.xls]

#一個txt文件,一個xls文件

target_dir=D:\QQDownload\backup\

#backup文件夾

target=target_dir+time.strftime(%Y%m%d%H%M%S)+ .zip

rar_command=rar a %s %s%(target, .join(source))

rar_command= "C:Program Files (x86)WinRARRar.exe" a %s %s%(target, .join(source))

#指出軟體命令路徑,即rar的安裝路徑

if os.system(rar_command)==0:

print Successful backup to,target

else:

printBackup Failed

運行結果:

創建的文件:


標籤:pycharm os.system(winrar) 報錯 ;python3

媽的,搞了一下午,終於搞定了,大家照著我的搞,應該可以搞定。

這裡其實最關鍵的一步,就是添加winrar的環境變數。總體操作如下:

1. 找到winrar.exe的絕對路徑,比如我的是D:Program FilesWinRARWinRAR.exe

2. 將程序所在文件夾的路徑添加到用戶的環境變數中:計算機,右鍵,屬性,高級系統設置,環境變數,用戶變數,點擊新建。變數名:path 變數值:D:Program FilesWinRAR;(注意末尾有一個分號)

3.設置好變數,在cmd下輸入WinRAR,敲回車。驗證變數是否OK。正常的話可以打開winRAR程序。

4.重新打開python console,在python console下執行一條winrar命令,看看能否正確調用,命令示例:

import os

os.system(WinRAR a G:abc.zip G:abc.txt) #將G盤下的abc.txt壓縮為G盤下abc.zip

執行成功的話會返回0

5.成功了,重啟pycharm,執行吧。(修改環境變數後一定要重啟pycharm,不然在pycharm不會實時去刷新環境變數的)


人家用Zip,你們成功不了用RAR,當然是一種解決途徑,但真正的是要按照Zip啊,教程上有鏈接,下來正常安裝。

然後需要 把路徑填到path 中,

比如我的就是「C:Program Files (x86)GnuWin32in」,添加了這個,系統才識別這個命令的

另外別忘記 重啟PyCharm,和命令窗一樣,需要重啟才能識別。

當然原則是你需要讓你系統理解命令的意思,所以不想裝Zip,本身有WinRAR的可以參考他們的回答,自己裝了7Zip 也可以對應的改壓縮那段代碼。


大概折騰了小半天,最後使用zip命令成功!!

按照教程,先安裝了GetGnuWin32,走完流程打開cmd輸入zip

zipc 不是內部或外部命令,也不是可運行的程序或批處理文件。

而在PyCharm中則是顯示一大堆亂碼。之後打開GetGnuWin32的bin目錄,發現有unzip.exe,卻沒有zip.exe,於是乎度娘zip for windows,貼上網址zip for windows,下載了二進位文件,如下圖所示

下載完成後,將bin目錄下的文件全部copy到GetGnuWin32的bin目錄。再次在cms輸入zip,就可以看到使用說明了(前提是已經配置好環境變數)

然後運行PyCharm裡面的代碼,愉快的打包。

最後,貼上代碼,誠意滿滿。

# coding=UTF-8
import os
import time

source = ["D:\tmp"]
target_dir = "E:\test"

target = target_dir + os.sep + time.strftime(%Y%m%d%H%M%S) + ".zip"

if not os.path.exists(target_dir):
os.mkdir(target_dir)

zip_command = "zip -r {0} {1}".format(target, "".join(source))

print("zipCommand is {0}".format(zip_command))
print("Running")
if os.system(zip_command) == 0:
print("Success")
else:
print("Backup Failed")


我最近也在學簡明教程,也遇到了這個問題。。昨天到今天總算解決了,感謝群里大神的答疑。感謝程序員的分享精神,考慮到這個問題搜索挺靠前的。應該還會有後來的人搜索到這個問題,所以把我自己的代碼寫下來。希望能給後來者有點參考價值。

先貼代碼:

import os

import time

source=[rC:workex40.py] #r防止轉義

target_dir=rC:workackup

target=target_dir +time.strftime(%Y%m%d%H%M%S)+.rar

rar_command="C:Progra~1WinRARRar.exe a %s %s"%(target,.join(source)) #兩個%s之間要有空格

if os.system(rar_command)==0: #os.system()函數用來運行shell命令

print(Successful backup to,target)

else:

print(Backup Failed)

注意的就是路徑要寫對,r用來防止轉義。還有因為我是把Rar安裝在C:Program FilesWinRARRar.exe下面的。。但是不能識別空格,所以我改用 C:Progra~1WinRARRar.exe來代替。

還有兩個%s之間要加空格。。我之前就是因為沒空格,調試了一整天。

剩下需要注意的可以看看前面的答案。我遇到的就是兩個問題。。對的,我的python版本為3.5


import os

import time

source= [rF:ackuptest1 est.txt]

target_dir= F:\backuptest2\

target = target_dir + time.strftime(%Y%m%d%H%M%S) + .rar

print (target)

rar_command=winrar a %s %s % (target,.join(source))

#rar_command=rC:Program FilesWinRARwinrar a %s %s % (target,.join(source))

#os.system(rwinrar a F:abc.rar F:abc.txt)

print (rar_command)

if os.system(rar_command)==0:

print (Successful backup to,target)

else:

print (Backup FAILED)

結果:

&>&>&>

F:ackuptest220170703153320.rar

winrar a F:ackuptest220170703153320.rar F:ackuptest1 est.txt

Successful backup to F:ackuptest220170703153320.rar

個人的解決步驟:

1.先下載了個winrar

將程序所在文件夾的路徑添加到用戶的環境變數中:計算機,右鍵,屬性,高級系統設置,環境變數,用戶變數,點擊新建。變數名:path
變數值:D:Program FilesWinRAR;

設置好變數,在cmd下輸入WinRAR,敲回車。驗證變數是否OK。正常的話可以打開winRAR程序。

2.理解了各個語句意思 os.system

#os.system 意思是執行系統命令,等於cmd裡面輸入命令

實例:

import os

print os.system(ping www.pythontab.com#x27;)

3.在cmd裡面輸入 如下

C:&>"c:Program FilesWinRAR
ar"

#看rar用法,

用法: rar
& -& -& &
&

&<@listfiles...&>
&

&

a 添加文件到壓縮文檔

#python 命令行下實驗下面語句,驗證os.system , winrar, a 是否ok。

os.system(rwinrar a F:abc.rar F:abc.txt)

成功

4. 最後檢查語句 if os.system(rar_command)==0:
rar_command 要和前面一樣

代碼review然後跑一下,搞定。


自己琢磨了好久總算是搞明白了 成就感MAX

把Rar.exe複製到python目錄下面 然後就可以了

以下是我的代碼:

#Filename:backup_ver1.py

import os

import time

#The files and directories to be backed up are specified in a list

source=[rD:PythonPython35-32helloworld.py]

target_dir=rD:Python

#the files are backed up into a zip file.

#the files name is date and time

target=target_dir+\+time.strftime(%Y%m%d%H%M%S)+.rar

#we use the rar command (in windows) to put the files in a rar archive:

rar_command="D:PythonPython35-32Rar.exe" a %s %s%(target, .join(source))

#print(target)

#print( .join(source))

#target: 待創建的文件的名稱 『 .join(source) 待備份的文件和目錄列表

if os.system(rar_command)==0:

print(Sucessful backup to,target)

else:

print(FILED)


zip_command = "C:\Program Files\WinRAR\rar.exe" a {0} {1} .format(target, .join(source))

winrar 軟體的路徑是關鍵點,我的rar就裝在了D盤,所以我的代碼是

zip_command = "D:\Program Files\WinRAR\rar.exe" a {0} {1} .format(target, .join(source))


下載zip.exe軟體放到windows的路徑下面就可以使用zip命令了。


我遇到和你一樣的情況,重啟電腦之後就成功了。。。


把Rar.exe放到Python安裝目錄下即可,Python27、


import os
import time

source = [rC:A, rC:B]

target_dir = rC:C\

target = target_dir + time.strftime(%Y%m%d%H%M%S) + .zip

print (target)# 檢查點

#把 Program FilesWinrar 中的 Rar.exe 拷貝到 C:Windows 下

rar_command = "rar a %s %s" % (target, .join(source))

print (rar_command)#檢查點

if os.system(rar_command) == 0:
print (成功備份到, target)
else:
print (備份失敗)


正好也在學這個,用的是window8 python 2.7.1

zip無法識別,無法壓縮,查看知乎,百度之後

解決方法

1下載WinRAR,安裝到C:WindowsSystem32下面

2將安裝的文件複製到Python27/example下面

3代碼

import os

import time

source=[rC:Python27examplecat.py,rC:Python27examplefor.py]

target_dir=rC:Python27exampled

target=target_dir+os.sep+time.strftime(%Y%m%d%H%M%S)+.rar

print source

print target

rar_command= "C:Python27exampleWinRAR.exe" a %s %s %(target, .join(source))

print(rar_command)

print(os.system(rar_command))

if os.system(rar_command)==0:

print Successful ,target

else:

print fail


我用的是仿linux命令的gnuwin32,在命令行輸zip顯示成功,同樣python也success

1.首先在Browse Files at SourceForge.net下載gnuwin32的安裝程序

2.安裝後運行bat文件download,等待下載完成

3.接著運行bat文件install

4.安裝完畢後添加環境變數:計算機,右鍵,屬性,高級系統設置,環境變數,點擊path,編輯,加入gnuwin32的路徑,我的是C:UsersAdministratorDesktopGetGnuWin32gnuwin32in

5.安裝完後cmd輸入zip檢查

6.最後重啟pycharm,然後運行貼上代碼

import os
import time
source = [E:\JevanLui\開發的程序\需要備份的]
target_dir = E:\JevanLui\開發的程序\備份後的
target = target_dir + os.sep + time.strftime(%Y%m%d%H%M%S) + .zip
if not os.path.exists(target_dir):
os.mkdir(target_dir)
zip_command = zip -r {0} {1}.format(target, .join(source))
print(Zip command is:)
print(zip_command)
print(Running:)
if os.system(zip_command) == 0:
print(Successful backup to, target)
else:
print(Backup FAILED)

建議把存放備份文件的文件夾改為英文否則會顯示亂碼


遇到類似的問題,已經解決。首先要為windows安裝zip,哪裡安裝?請移步本答案的@陳Pana。安裝成功後需要將安裝路徑添加到系統變數中,過程不再贅述。重點來了,形如「C:Program Files (x86)GnuWin32in」路徑是無效的(cmd環境仍認為zip命令無效),必須在bin結尾有反斜杠,即」C:Program Files (x86)GnuWin32in」。希望幫到各位


發現自己腦子轉不過彎真的笨啊,先按教程下載zip,把它添加到path環境變數中,在命令行運行zip就會有顯示了。。。。。

最重要的是要重啟電腦,不是重啟IDE!!!!!!


自學Python的first blood獻給了backup_ver1,卡在這卡了整整一個上午。

我的教訓:改完環境變數以後,重啟的是電腦,不是IDE!!!!


推薦閱讀:

爬蟲入門到精通-環境的搭建
Write a Python function
Python文學家為Python寫的一首詞?(附中英文版)
如何入門Keras?
給Python初學者的最好練手項目

TAG:Python |