【发布时间】:2021-04-06 07:53:28
【问题描述】:
我正在尝试通过默认程序显示最终的 results.txt 文件。我试过裸Popen() 没有run() 并得到相同的效果。目标文件正在打开(对我来说是查看模式),但退出后我收到:
警告:程序返回非零退出代码 #256
有什么方法可以忽略它并阻止我的程序显示此类警告?我不关心它,因为它是程序做的最后一件事,所以我不希望人们每次都浪费时间点击 Enter...
代码如下:
from subprocess import run, Popen
if filepath[len(filepath)-1] != '/':
try:
results = run(Popen(['start', 'results.txt'], shell=True), stdout=None, shell=True, check=False)
except TypeError:
pass
else:
try:
results = run(Popen(['open', 'results.txt']), stdout=None, check=False)
except TypeError:
pass
except FileNotFoundError:
try:
results = run(Popen(['see', 'results.txt']), stdout=None, check=False)
except TypeError:
pass
except FileNotFoundError:
pass
【问题讨论】:
-
什么 - 你将
Popen对象传递给run?这不是你使用这些东西的方式。 -
我已经尝试使用裸
Popen,正如我在帖子中已经提到的那样。这是有人向我求婚但没有成功的方式,这没关系,因为两种方式都行不通。我很欣赏run或Popen的解决方案,我不挑剔 -
首先是
os.system(),它允许像这样运行cmd命令:例如os.system('open results.txt')。您也可以使用 python 打开文件,例如:with open('results.txt') as file:或者如果您想以可视方式打开:os.startfile(r'path\to\file.extension')可能还有其他内置方法来做您想做的更简单的事情 -
run需要一个命令来运行,而不是一个Popen对象(它代表一个已经启动的进程)。 -
@Matiiss 我想以可视方式打开它们,但您的解决方案无法正常工作。 os.startfile(filepath + 'results.txt') AttributeError: module 'os' has no attribute 'startfile'
标签: python python-3.x subprocess exit-code