假设我有一个Zip文件,而test1.py
正在从用户那里获取Zip文件的输入。
现在,test2.py
打印Zip文件的内容。
我想从test1.py
获取输入Zip文件以进行test2.py
的操作。
因此,每当我运行test1.py
时,都应该询问Zip文件的名称并将其转发到test2.py
并显示test2.py
的输出。
我想这样做:
test1.py:
import zipfile
import os
inputzip = input("Enter the Zip File:")
file = zipfile.ZipFile(inputzip, "r")
os.system("py test2.py")
test2.py:
import zipfile
import os
print ("The list of files in the zip : ")
for name in file.namelist():
print (name)
但是每当我要运行test1.py时,它总是显示,
Enter the zip file:
test2.py没有执行。 我正在使用python 3.x
答案 0 :(得分:2)
评论者是对的,但听起来你还是想知道。 @martineau已经强调了这个问题。发生的事情如下:
因为他们彼此不了解,所以你想要的方式(即使用os.system())的最简单的选项是从test1传递信息。以字符串的形式py到test2.py.一种方法是:
<强> test1.py 强>:
import zipfile
import os
inputzip = input("Enter the Zip File:")
files = zipfile.ZipFile(inputzip, "r")
name_list = (" ".join([i for i in files.namelist()]))
os.system("python3 test2.py {0}".format(name_list))
和
<强> test2.py 强>:
import zipfile
import sys
print ("The list of files in the zip : ")
for name in sys.argv[1:]:
print (name)
<强>输出强>:
Enter the Zip File:test.zip
The list of files in the zip :
test
txt1
txt2
最后这非常混乱,正如@joelgoldstick已经指出的那样,你应该将方法从test2.py导入test1.py。例如:
<强> test2.py 强>:
def test2_method(zipfile):
print ("The list of files in the zip : ")
for name in zipfile.namelist():
print (name)
<强> test1.py 强>:
import zipfile
from test2 import test2_method
inputzip = input("Enter the Zip File:")
files = zipfile.ZipFile(inputzip, "r")
test2_method(files)
<强>输出强>:
Enter the Zip File:test.zip
The list of files in the zip :
test
txt1
txt2
我目前想知道让两个进程共享内存并且能够将打开的zip文件对象的内存引用传递给另一个进程是多么容易。不知道这是否可能&gt; _&lt;。任何可以启发的人都会很酷。