从一个python文件中获取输入并将其用于另一个python文件

take the input from one python file and use it to another python file

假设我有一个zip文件,test1.py从用户那里获取zip文件的输入。

现在,test2.py打印zip文件的内容。

我想从test1.py获取输入zip文件,用于test2.py的操作。

因此,每当我运行test1.py时,它应该请求zip文件的名称并将其转发到test2.py并显示test2.py的输出。

我试着这样做:

Test1.Py:

1
2
3
4
5
6
import zipfile
import os

inputzip = input("Enter the Zip File:")
file = zipfile.ZipFile(inputzip,"r")
os.system("py test2.py")

Test2.Py:

1
2
3
4
5
6
7
import zipfile
import os

print ("The list of files in the zip :")

for name in file.namelist():
   print (name)

但是每当我运行test1.py时,它总是显示,

1
Enter the zip file:

test2.py未执行。我用的是python 3.x


评论是对的,但听起来你还是想知道。@martineau已经强调了这个问题。发生的情况如下:

  • test1.py在自己的进程中执行并打开zip文件。
  • test1.py要求操作系统启动test2.py
  • test2.py在自己的进程中执行,并且没有test1.py子进程中存在的zip文件的概念。
  • 因为他们不了解彼此,所以以您想要的方式(即使用os.system())最简单的选择是以字符串的形式将信息从test1.py传递到test2.py。一种方法是:

    Test1.Py:

    1
    2
    3
    4
    5
    6
    7
    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:

    1
    2
    3
    4
    5
    6
    7
    import zipfile
    import sys

    print ("The list of files in the zip :")

    for name in sys.argv[1:]:
       print (name)

    输出:

    1
    2
    3
    4
    5
    Enter the Zip File:test.zip
    The list of files in the zip :
    test
    txt1
    txt2

    最后,这是相当混乱的,正如@joelgoldstick已经指出的,您应该只将方法从test2.py导入test1.py。例如:

    Test2.Py:

    1
    2
    3
    4
    5
    def test2_method(zipfile):
      print ("The list of files in the zip :")

      for name in zipfile.namelist():
         print (name)

    Test1.Py:

    1
    2
    3
    4
    5
    6
    7
    8
    import zipfile

    from test2 import test2_method

    inputzip = input("Enter the Zip File:")
    files = zipfile.ZipFile(inputzip,"r")

    test2_method(files)

    输出:

    1
    2
    3
    4
    5
    Enter the Zip File:test.zip
    The list of files in the zip :
    test
    txt1
    txt2

    我现在想知道两个进程共享内存和一个进程能够将打开的zip文件对象的内存引用传递给另一个进程有多容易。不知道这是否可能。任何能开明的人都会很酷。