我正在尝试从一个目录复制到另一个目录,并通过调用'cp'同时重命名它们,如下所示:
directories = ['/Users/Me/Folder1/File1.txt', '/Users/Me/Folder/File2.txt']
output = ['/Users/Me/Folder2/Hello.txt', 'Users/Me/Folder2/World.txt']
for in, out, in zip(directories, output):
subprocess.call('cp', in, out)
Run Code Online (Sandbox Code Playgroud)
但它返回:
File "./test.py", line 33, in <module>
subprocess.call('cp', in, out)
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 659, in __init__
raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我想根据用户定义目录中的文件名在 Python 中创建一个新列表。
我无法完全理解 wiki 中的子进程语法,并且一些使用 PIPE 的命令似乎不被鼓励。
所以我会提示定义从哪个目录加载:
directory = raw_input("Path to directory: ")
然后subprocess.check_output(["ls", "*eg*.txt"])在指定目录中运行并将输出放入list1.
我有:
foo = ['/directory/1/', '/directory/2']
bar = ['1.txt', '2.txt']
Run Code Online (Sandbox Code Playgroud)
我想要:
faa = ['/directory/1/1.txt', '/directory/2/2.txt']
Run Code Online (Sandbox Code Playgroud)
我似乎只能调用尝试向列表添加字符串的操作,这会导致类型错误.