【问题标题】:reading terminal in python not the same [duplicate]在python中读取终端不一样[重复]
【发布时间】:2020-02-01 23:54:45
【问题描述】:
import os
from subprocess import PIPE,Popen
#os.chdir("..")
cmd=["ls","*.py"]

try:
    p=Popen(cmd,stdout=PIPE,universal_newlines=True,shell=True)
except Exception as e:
    print(f"Exception:\t{e}")
for line in p.stdout:
    print(line,end=" ")
p.stdout.close()
return_code=p.wait()

我正在尝试在我的服务器中获取 ls 所有 python 文件,但是每当我编写应该是所有 .py 文件的输出时,我都会将每个文件都放在那里,我做错了什么。 我在服务器终端尝试了ls *.py,它工作正常,但是在脚本中不起作用

【问题讨论】:

  • 不是解决方案,但你为什么使用Popen 而不是run

标签: python


【解决方案1】:

您可以直接使用“ls *.py”作为命令

import os
from subprocess import PIPE,Popen
#os.chdir("..")
cmd=["ls *.py"]

try:
    p=Popen(cmd,stdout=PIPE,universal_newlines=True,shell=True)
except Exception as e:
    print(f"Exception:\t{e}")
for line in p.stdout:
    print(line,end=" ")
p.stdout.close()
return_code=p.wait()

【讨论】:

  • 这可行,但在文档中使用列表元素来显示空格
  • @Piggydog 当您使用shell=True 时,命令会作为单个字符串提供给shell。
  • 如果使用列表,它只会将第一个元素发送到外壳。
  • 虽然文档似乎没有提到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
相关资源
最近更新 更多