我想做的很简单。我想使用python的subprocess
模块调用以下命令。
cat /path/to/file_A > file_B
该命令可以简单地工作并将其内容复制file_A
到file_B
当前工作目录中。但是,当我尝试subprocess
在脚本中使用模块调用此命令时,会出错。以下是我在做什么:
import subprocess
subprocess.call(["cat", "/path/to/file_A", ">", "file_B"])
我收到以下错误:
cat: /path/to/file_A: No such file or directory
cat: >: No such file or directory
cat: file_B: No such file or directory
我究竟做错了什么 ?如何在子流程模块call
命令中使用大于运算符?
>
输出重定向是一个 shell
功能,但是subprocess.call()
带有args
列表并且shell=False
(默认)不使用shell。
您必须shell=True
在这里使用:
subprocess.call("cat /path/to/file_A > file_B", shell=True)
或更妙的是,用于subprocess
将命令的输出重定向到文件:
with open('file_B', 'w') as outfile:
subprocess.call(["cat", "/path/to/file_A"], stdout=outfile)
如果您只是复制文件,请使用shutil.copyfile()
函数让
Python在以下位置 复制文件:
import shutil
shutil.copyfile('/path/to/file_A', 'file_B')
最近,我一直在处理一些紧凑的代码,我试图得到一个非常奇怪的尽可能小的循环。 我知道我可以让循环工作,比如一个if/ther语句,但是我正在寻找一种更小的方法来做到这一点,因为这使得代码大了两倍(更长的“循环”)。 那么是的,有什么办法可以做到这一点吗?还是我一直在用一个不同的角色做两个不同的循环?提前谢谢
问题内容: Swift 1.1包含〜>运算符的声明: 这在Swift中有什么用?它似乎已声明,但未定义任何可利用它的函数。其他开发人员已将其用于响应模式和封送队列之间的封包,但我想知道为什么在标准框架中对其进行了定义。我猜想它可以“保留”一个自定义运算符供开发人员使用,因为它具有最高的优先级。 问题答案: 由于Swift是开源的,我们可以看到将stdlib 包括在内的实际原因:作为Swift 1.
问题内容: 不知道这是怎么回事。这是来自phpMyAdmin的查询: 但我始终获得返回表中的所有记录,包括那些起始日期为2012-11-01的记录。是什么赋予了? 问题答案: 您迷上了单引号导致它变成字符串,请改用 SQLFiddle演示
问题内容: 我注意到最近有一段代码直接比较两个整数列表,如下所示: 这似乎有点奇怪,但我想如果所有元素都大于,它将返回,如果每个元素相等或元素大于则返回False 。所以我测试了它: 好的,行得通。和: 但是当它变得更加模糊时: 要么: 结果有点陌生。python实际在做什么?看来它返回的结果偏向于第一个列表,其中最左边的元素大于相应的元素? 问题答案: 从比较序列和其它类型在Python教程:
这可能是一个愚蠢的问题,但看看操作符到函数的映射,我注意到没有函数来表示
问题内容: 我只想做这样的事情: 问题答案: 如果您使用的是freemarker 2.3.23或更高版本,则可以使用内置的: 如果您使用的是较早版本的freemarker,则可以改用内置的: 当应用于布尔值时,内置函数将充当三元运算符。