Python 使用cat in子流程打印文件内容

Python 使用cat in子流程打印文件内容,python,shell,subprocess,Python,Shell,Subprocess,我正在使用python中的子流程调用,其中我必须使用cat打印文件内容。文件名是我在python代码本身中生成的一个变量。这是我的代码: pid = str(os.getpid()) tmp_file_path = "/tmp/" + pid + "/data_to_synnet" synnet_output = subprocess.check_output(["cat echo '%s'"%tmp_file_path], shell=True) 上面的代码抛出一个错误,说明cat:echo

我正在使用python中的子流程调用,其中我必须使用
cat
打印文件内容。文件名是我在python代码本身中生成的一个变量。这是我的代码:

pid = str(os.getpid())
tmp_file_path = "/tmp/" + pid + "/data_to_synnet"
synnet_output = subprocess.check_output(["cat echo '%s'"%tmp_file_path], shell=True)
上面的代码抛出一个错误,说明
cat:echo:没有这样的文件或目录

但是,当我仅使用
子流程。检查输出([“echo'%s'%tmp\u file\u path],shell=True)
时,变量名打印正确


此外,我还尝试在命令行中执行此操作(
cat echo$tmp_file_name
),并且效果良好。有人能告诉我是怎么回事吗?

您需要的命令是:

"cat '%s'"%tmp_file_path
不要用“回声”这个词

或者

 synnet_output = subprocess.check_output(["cat", tmp_file_path], shell=False)

您需要的命令如下:

"cat '%s'"%tmp_file_path
不要用“回声”这个词

或者

 synnet_output = subprocess.check_output(["cat", tmp_file_path], shell=False)

cat
正在尝试打开名为
echo
的文件。为什么要使用echo?当我在命令行上尝试
cat echo$tmp_file_name
时,我得到
cat:echo:没有这样的文件或目录
-您当前目录中必须有一个名为echo的文件。
cat
正在尝试打开一个名为
echo
的文件。为什么要使用echo?当我在命令行上尝试
cat echo$tmp_file_name
时,我得到
cat:echo:没有这样的文件或目录
-您当前目录中必须有一个名为echo的文件。可能值得一提的是,
shell=False
是有效的,因为
echo
是一个内置的shell,因此不需要shell(
/bin/echo
将使用其他方式)。可能值得一提的是,
shell=False
是有效的,因为
echo
是一个内置的shell,因此不需要shell(
/bin/echo
将使用其他方式)。