没有这样的目录'file.xml'文件

时间:2018-01-16 11:25:50

标签: python xml zipfile

尝试使用python 3中的zipfile模块创建zip文件时出现小问题。

我有一个包含xml文件的目录,我希望从同一目录中的所有这些文件创建一个zip存档,但是遇到错误FileNotFoundError: [Errno 2] no such file or directory: 'file.xml'

脚本:

import datetime
import os
import zipfile


path = '/Users/xxxx/reports/xxxx/monthly'
month = datetime.datetime.now().strftime('%G'+'-'+'%B')
zf = os.path.join(path, '{}.zip'.format(month))

z = zipfile.ZipFile(zf, 'w')
for i in os.listdir(path):
    if i.endswith('.xml'):
        z.write(i)
z.close()

似乎在调用z.write(i)时,它正在工作目录中查找xml文件,但工作目录是/Users/xxxx/scripts,其中包含python脚本。

如果可能的话,如何在不更改当前工作目录的情况下让z.write(i)查看path变量。

2 个答案:

答案 0 :(得分:1)

  

实际发生的是,当您浏览os.listdir(path)时,i本身只是FileName,其中不包含文件的真实Path。有几种方法可以解决这个问题;最简单的(但最粗略的)如下所示:

import datetime
import os
import zipfile

path    = '/Users/xxxx/reports/xxxx/monthly'
month   = datetime.datetime.now().strftime('%G'+'-'+'%B')
zf      = os.path.join(path, '{}.zip'.format(month))
z       = zipfile.ZipFile(zf, 'w')

for i in os.listdir(path):
    # DECLARE A VARIABLE TO HOLD THE FULL PATH TO THE FILE:
    xmlFile = "{}/{}".format(path, i)   # <== PATH TO CURRENT FILE UNDER CURSOR
    if xmlFile.endswith('.xml'):
        z.write(xmlFile)
        z.write(filename=xmlFile, arcname="ARCHIVE_NAME_HERE", ) # <== CHANGE
z.close()  

希望这有助于。
干杯和好运......

答案 1 :(得分:0)

使用os.chdir移动到文件路径并尝试将文件写入zip。

import datetime
import os
import zipfile


path = '/Users/xxxx/reports/xxxx/monthly'
month = datetime.datetime.now().strftime('%G'+'-'+'%B')
zf = os.path.join(path, '{}.zip'.format(month))

z = zipfile.ZipFile(zf, 'w')
os.chdir(path)   #Change DIR
for i in os.listdir(path):
    if i.endswith('.xml'):
        z.write(i)
z.close()

不改变DIR:

z = zipfile.ZipFile(zf, 'w')
for i in os.listdir(path):
    if i.endswith('.xml'):
        z.write(os.path.join(path, i))
z.close()