错误Python子进程调用复制文件。没有文件,失败,但返回1.为什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误Python子进程调用复制文件。没有文件,失败,但返回1.为什么?相关的知识,希望对你有一定的参考价值。

import subprocess
import os

#files
src_file = '/../copy_me_test.txt'
destination_file = 'paste_here.txt'

#make copy of file
shell_command = 'cp "%s" "%s"' % (src_file, destination_file)
successful = subprocess.call(shell_command, shell = True)
print(successful)

所以我将文件从一个目录复制到另一个目录。当我运行subprocess.call()方法时,它返回1.除了没有任何反应,我在终端上收到以下消息。

cp: /Users/my_name/Desktop/python/copy_files/copy_me_test.txt: No such file or directory
1

这里发生了什么?不应该返回0,因为它无法复制文件。我已经做了一个工作,但我想知道是否有人知道为什么会这样?任何信息或链接将不胜感激。

答案

返回0成功。不是0就是失败。返回码可以是从0到4294967295的32位整数。根据操作系统查看Exit status

有时可以设置或接收否定返回代码,因为Python 3文档确认。

Popen.returncode

子返回码,由poll()和wait()设置(间接由communic()设置)。 “无”值表示该进程尚未终止。

负值-N表示孩子被信号N(仅POSIX)终止。

使用exit(-1)退出Python导致Windows上的4294967295,因此Python使用无符号的32位返回码。

另一答案

根据这里的文档https://docs.python.org/2/library/subprocess.html它会在失败时返回1,如果你使用属性shell = True也会检查是否有警告

以上是关于错误Python子进程调用复制文件。没有文件,失败,但返回1.为什么?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查子进程是不是正确终止? [复制]

OSError: [Errno 2] 在 Django 中使用 python 子进程时没有这样的文件或目录

OSError:[Errno 2]在Django中使用python子进程时没有这样的文件或目录

petalinux--执行子进程“oe-gnome-terminal-phonehome”失败(没有那个文件或目录)(转)

使用子进程时如何在 Python 中复制 tee 行为?

使用子进程时如何在 Python 中复制 tee 行为?