我正在尝试将一个函数的输出读入另一个函数。
如果我将事情分解为两个步骤,从命令行调用第一个函数(journal.py),然后调用第二个函数(ip_list.py)我得到我正在寻找的结果。
如果我尝试导入第一个并在第二个中运行它,结果列表为空。
a+b+c != c+b+a
输出 - >
import re
import journal
journal.journal()
ip_list = []
with open('Invalid_names_file') as file1:
print(file1)
a = [re.search(r'((\d+\.)+\d+)', line).group() for line in file1]
print(a)
for x in a:
if x not in ip_list:
ip_list.append(x)
print(ip_list)
当以这种方式调用时,我正在打开的文件(一旦脚本运行完毕),我正在期待的东西,但当我尝试包含时,我无法从中读取它它与导入。
我有print()s,这样我就可以尝试了解发生了什么,但却无法理解它。
journal.py是一个写入文件的Popen命令。
编辑chris
journal.py
<_io.TextIOWrapper name='Invalid_names_file' mode='r' encoding='UTF-8'>
[]
[]
答案 0 :(得分:1)
您应该等待Popen()
完成。
将其返回值分配给变量并在其上调用wait()
:
p = Popen('journalctl ...')
p.wait()
当您单独运行日志脚本时,父进程将仅在其所有子进程终止时返回。
但是,Popen()
不等待 - 除非你告诉它。
因此,在您的情况下,journal()
函数在启动子进程后立即退出,因此当您读取目标文件时,它仍然是空的或不完整的。