Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 7z将无法使用子流程找到存档_Python_7zip - Fatal编程技术网

Python 7z将无法使用子流程找到存档

Python 7z将无法使用子流程找到存档,python,7zip,Python,7zip,为此挣扎了两周。我拿不到这个,拉上拉链打开。我知道它是正确的,因为我可以让它在标准命令行中工作,它显示了我所知道的一切。正在尝试解压缩zip文件,然后重命名该文件的部分内容并将其复制到另一个文件夹。以下是基本设置: import subprocess cmd = ['7z', 'e', 'site'] sp = subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE) 导入后,我尝试使用以下方法将其解压缩:

为此挣扎了两周。我拿不到这个,拉上拉链打开。我知道它是正确的,因为我可以让它在标准命令行中工作,它显示了我所知道的一切。正在尝试解压缩zip文件,然后重命名该文件的部分内容并将其复制到另一个文件夹。以下是基本设置:

import subprocess
cmd = ['7z', 'e', 'site']
sp = subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
导入后,我尝试使用以下方法将其解压缩:

sp.communicate([cmd, 'r"C:\Users\boster\desktop\data1.zip"'])
现在它越过了这一点,因为它移动到我的if-else部分,但它没有解包。我知道它将运行以下命令,因为它将结束并返回else语句,然后提示我再次运行数据

if "sz + business_date" == name: 
    shutil.copy(sz%s) % business_date
    os.renames(sales.xls)
    shutil.copy(sc%s) % business_date
    os.renames(cosales.xls)
    shutil.copy(aj%s) % business_date
    os.renames(money.xls)
    shutil.copy(cc%s) % business_date
    os.renames(count.xls)
else:
    print "Repoll %s for %s" % (item, business_date)
    print "Once information is downloaded press enter."
    re_download = raw_input(" ")
    data_one()

我省略了一些东西,比如business_date部分,因为它在else中作为变量返回,所以我知道它正确地获取了这些信息。我只是不知道为什么这个不能打开。请帮忙。如果这还不够,如果您愿意,我将上传整个模块。

我在子流程中使用7zip压缩文件时遇到类似问题,我用另一种方法解决了问题。这是我的密码

def zip_files_in_special_path(rom_path, rom_name):
    pre_cwd = os.getcwd()
    os.chdir(rom_path)
    cmd_str = r'C:\7-Zip\7z a -tzip -r '+rom_name+' *'

    try:
        status = os.system(cmd_str)
        if status<=1:
            return True
        else:
            raise RunCmdError('run 7z to zip files failed!')
    finally:
        os.chdir(pre_cwd)
特殊路径(rom路径,rom名称)中的def zip文件: pre_cwd=os.getcwd() chdir(rom\u路径) cmd_str=r'C:\7-Zip\7z a-tzip-r'+rom_name+'*' 尝试: 状态=操作系统(cmd_str)
如果status在子流程中使用7zip压缩文件时遇到类似的问题,我会用另一种方法解决问题。这是我的密码

def zip_files_in_special_path(rom_path, rom_name):
    pre_cwd = os.getcwd()
    os.chdir(rom_path)
    cmd_str = r'C:\7-Zip\7z a -tzip -r '+rom_name+' *'

    try:
        status = os.system(cmd_str)
        if status<=1:
            return True
        else:
            raise RunCmdError('run 7z to zip files failed!')
    finally:
        os.chdir(pre_cwd)
特殊路径(rom路径,rom名称)中的def zip文件: pre_cwd=os.getcwd() chdir(rom\u路径) cmd_str=r'C:\7-Zip\7z a-tzip-r'+rom_name+'*' 尝试: 状态=操作系统(cmd_str)
如果状态我最终设法让它工作。它不是在subprocess.communicate上解包的,因为调用不能与管道一起使用,所以我只是在Begging上转储了所有命令,并以以下内容结束

def extract_data_one():
    for item in sites:
        os.chdir(r"\\svr-dc\ftp site\%s\Daily" % item)
        subprocess.call(['7z', 'e', 'data1.zip', '*.*'])

谢谢你的帮助。

我终于成功地让它工作了。它不是在subprocess.communicate上解包的,因为调用不能与管道一起使用,所以我只是在Begging上转储了所有命令,并以以下内容结束

def extract_data_one():
    for item in sites:
        os.chdir(r"\\svr-dc\ftp site\%s\Daily" % item)
        subprocess.call(['7z', 'e', 'data1.zip', '*.*'])

感谢您的帮助。

为什么在
'r“C:\Users\boster\desktop\data1.zip”
周围有引号?这不是处理原始字符串的方式。它应该是
r“C:\Users\boster\desktop\data1.zip”
。另外,我不认为
“sz+business\u date”
能做你认为它能做的事。我在整个原始字符串中没有使用“”的情况下尝试了它,但它仍然不起作用。现在我把它改回来了,我意识到我没有得到归档未找到的错误,但它仍然没有解包。“sz+business_date”应该返回一个值,例如今天的日期为sz07312013。这是正确的吗?该部分的全部要点是验证解包的文件的日期是否正确。否,
“sz+business\u date”
提供字符串
sz+business\u date
。你应该删除引号。我并不是想高人一等,但您似乎对Python的一些基本方面没有太多经验。我建议充分利用交互式Python shell来测试单个代码片段,这样您就可以确信他们会做您认为他们正在做的事情。谢谢jjin,我没有太多的经验,但这只是一个愚蠢的错误。我昨晚确实解决了这个问题,我肯定会一件一件地把这个问题解决,让每个部分都能正常工作,然后再把它放回更大的应用程序中。谢谢仍然无法找到关于7z为什么不能从文件中提取任何内容的答案。我的脚本不会返回任何错误,但也不会执行任何操作。根据你的建议jjlin,我只提取了子进程,并且正在单独运行它,这样我就可以真正地确定提取过程中的错误。为什么在
'r“C:\Users\boster\desktop\data1.zip”周围有引号?
?这不是处理原始字符串的方式。它应该是
r“C:\Users\boster\desktop\data1.zip”
。另外,我不认为
“sz+business\u date”
能做你认为它能做的事。我在整个原始字符串中没有使用“”的情况下尝试了它,但它仍然不起作用。现在我把它改回来了,我意识到我没有得到归档未找到的错误,但它仍然没有解包。“sz+business_date”应该返回一个值,例如今天的日期为sz07312013。这是正确的吗?该部分的全部要点是验证解包的文件的日期是否正确。否,
“sz+business\u date”
提供字符串
sz+business\u date
。你应该删除引号。我并不是想高人一等,但您似乎对Python的一些基本方面没有太多经验。我建议充分利用交互式Python shell来测试单个代码片段,这样您就可以确信他们会做您认为他们正在做的事情。谢谢jjin,我没有太多的经验,但这只是一个愚蠢的错误。我昨晚确实解决了这个问题,我肯定会一件一件地把这个问题解决,让每个部分都能正常工作,然后再把它放回更大的应用程序中。谢谢仍然无法找到关于7z为什么不能从文件中提取任何内容的答案。我的脚本不会返回任何错误,但也不会执行任何操作。根据你的建议,jjlin我只提取了子流程,并且单独运行它,这样我就可以真正确定提取过程中的错误。