我正在阅读有关子进程和使用某些代码的内容。 我正在使用Windows 7和Python3.6
import subprocess
process = subprocess.Popen(['notepad', 'C:\\Users\Amit\Downloads\InsiderTrades.txt'],stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#I'm opening a text file which has a list of stock tickers
stdout1, stderr1 = process.communicate()
print(stdout1.decode('ASCII'))
我得到的输出是什么或
b''
作为stdout1的值。
我不太确定communicate
在这种情况下输出了什么。
我的印象是它会从我的文本文件中输出文本,或者它会将我输入的任何内容输出到文本文件中。
我也尝试输入新打开的文本文件,但我仍然得到相同的输出,b''
所以我得到一个空字符串,尽管在新打开的文本文件中输入了一些东西。
答案 0 :(得分:1)
子进程基本上就像在终端中运行该命令一样。
所以你正在做的就是跑步
class Share(models.Model):
example = models.ForeignKey(Example, related_name='shares')
...
它只是在记事本中打开一个文件,但它不会向标准输出发送任何内容。
如果您运行的命令将某些内容写入标准输出,那么您将拥有一个非空的stdout1。例如,如果您使用的是* nix系统,请尝试notepad some_file.txt
;如果是在Windows上,请尝试ls
。