【问题标题】:Script not working since windows 7脚本自 Windows 7 起不起作用
【发布时间】:2013-05-14 15:25:03
【问题描述】:

我的以下脚本在 XP 上运行良好,因为我在 Windows 7 Professional 上有一台新电脑,代码已停止工作

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 日志.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'

我想不出它为什么会停止工作,提前谢谢

【问题讨论】:

  • 您是否也更改了 Python 版本?
  • 以前是 2.7.2 现在是 2.7.4
  • 在 `c:\logs` 上设置访问权限?
  • 我可以访问目录,我可以手动压缩它们

标签: python windows-7


【解决方案1】:

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

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

【讨论】:

  • 它将从命令行手动工作 C:\logs>zip ping_dms_155.2013-05-14.log.zip ping_dms_155.log 添加:ping_dms_155.log(160 字节安全)(放气 89% )
  • zip ping_dms_155.2013-05-14.log.zip ping_dms_155.log,参数ping_dms_155.2013-05-14.log.zip好像和files1不一样,files1是ping_dms_155.log.2013- 05-14.zip。可能是文件名不允许使用“。”其次是 ”-”。尝试将文件命名为 files1 = files.split(".")[0] + "-" + strftime("%Y-%m-%d")+".zip"
  • 您能否在代码中打印 files1 并检查它是否与 logsdir 中的内容相同?如果它们不同,那应该是问题所在。
【解决方案2】:

您的路径字符串未正确转义。

logsdir="c:\logs"
zipdir="c:\logs\puttylogs\zipped_logs"

应该是:

logsdir=r"c:\logs"
zipdir=r"c:\logs\puttylogs\zipped_logs"

目录 c:ogs 不存在。手动运行它,因为您更改到日志目录。它在 XP 上运行是因为......好吧,您没有在 XP 上运行这个确切的脚本,因为它在那里也不起作用。

【讨论】:

  • 添加不会改变它,它仍然错误相同。我现在有两台机器在运行,而 XP 的一台正在运行
【解决方案3】:

我已经通过将 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)

【讨论】:

  • 感谢大家的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2011-06-04
相关资源
最近更新 更多