我有以下脚本在XP上工作正常,因为我在Windows 7 Professional上有一台新PC代码已经停止工作
import os
import shutil
from time import strftime
logsdir="c:\logs"
zipdir="c:\logs\puttylogs\zipped_logs"
zip_program="zip.exe"
for files in os.listdir(logsdir):
if files.endswith(".log"):
files1=files+"."+strftime("%Y-%m-%d")+".zip"
os.chdir(logsdir)
os.system(zip_program + " " + files1 +" "+ files)
shutil.move(files1, zipdir)
os.remove(files)
我得到的错误是 U:> python logs.py zip警告:名称不匹配:ping_dms_155.log
zip error: Nothing to do! (ping_dms_155.log.2013-05-14.zip)
Traceback (most recent call last):
File "logs.py", line 24, in <module>
shutil.move(files1, zipdir)
File "c:\python27\lib\shutil.py", line 301, in move
copy2(src, real_dst)
File "c:\python27\lib\shutil.py", line 130, in copy2
copyfile(src, dst)
File "c:\python27\lib\shutil.py", line 82, in copyfile
with open(src, 'rb') as fsrc:
IOError: [Errno 2] No such file or directory: 'ping_dms_155.log.2013-05-14.zip'
我想不出为什么它会停止工作,提前谢谢
答案 0 :(得分:0)
您的Windows 7计算机上似乎有zip.exe
错误,但它可能不是与Windows 7兼容的版本。
签入logsdir
以查看您修改的文件(ping_dms_155.log.2013-05-14.zip
)是否已存在。如果所有这些都是真的,我建议使用python模块zipfile
。
答案 1 :(得分:0)
您的路径字符串未正确转义。
logsdir="c:\logs"
zipdir="c:\logs\puttylogs\zipped_logs"
应该是:
logsdir=r"c:\logs"
zipdir=r"c:\logs\puttylogs\zipped_logs"
目录c:ogs不存在。手动运行它是因为您已更改为日志目录。它运行在XP上,因为......好吧,你没有在XP上运行这个确切的脚本,因为它也无法在那里运行。
答案 2 :(得分:0)
我通过将os.system更改为子进程来实现此功能,因此代码现在看起来像
import os
import shutil
from time import strftime
import subprocess
logsdir="c:\logs"
zipdir="c:\logs\puttylogs\zipped_logs"
zip_program="zip.exe"
for files in os.listdir(logsdir):
if files.endswith(".log"):
files1=files+"."+strftime("%Y%m%d")+".zip"
os.chdir(logsdir)
subprocess.call([zip_program,files1, files])
shutil.move(files1, zipdir)
os.remove(files)