-1

我有以下在 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'

我想不出它为什么会停止工作,在此先感谢

4

3 回答 3

0

看来您zip.exe的 Windows 7 机器上确实存在该错误,但它可能不是与 Windows 7 兼容的版本。

签入logsdir以查看您修改的文件 ( ping_dms_155.log.2013-05-14.zip) 是否已存在。如果所有这些都是真的,我建议使用 python 模块zipfile

于 2013-05-14T15:47:34.307 回答
0

我通过将 os.system 更改为 subprocess 来实现此功能,因此代码现在看起来像

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)
于 2013-05-15T13:53:37.153 回答
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 上运行这个确切的脚本,因为它在那里也不起作用。

于 2013-05-14T16:10:19.687 回答