簡體   English   中英

subprocess.call問題

[英]Problem with subprocess.call

在我當前的工作目錄中,我的目錄是ROOT /,其中包含一些文件。

我知道我可以執行cp -r ROOT/* /dst並且沒有問題。

但是,如果我打開Python控制台並編寫以下代碼:

import subprocess
subprocess.call(['cp', '-r', 'ROOT/*', '/dst'])

沒用!

我有此錯誤: cp: cannot stat ROOT/*: No such file or directory

你能幫助我嗎?

剛嘗試做類似的事情時碰到了這一點。

*不會擴展為文件名

究竟。 如果查看cp的手冊頁,則可以使用任意數量的源參數調用它,並且可以使用-t開關輕松更改參數的順序。

import glob
import subprocess
subprocess.call(['cp', '-rt', '/dst'] + glob.glob('ROOT/*'))

嘗試

subprocess.call('cp -r ROOT/* /dst', shell=True)

請注意,此處使用單個字符串而不是數組。

或者使用listdir建立自己的實現並復制

*不會擴展為文件名。 這是外殼的功能。 在這里,您實際上要復制一個名為*的文件。 subprocess.call()與參數shell=True

提供命令作為列表,而不是字符串+ list。

以下兩個命令相同:

First Command:-
test=subprocess.Popen(['rm','aa','bb'])

Second command:-
list1=['rm','aa','bb']
test=subprocess.Popen(list1)

因此,要復制多個文件,需要使用blob獲取文件列表,然后將“ cp”添加到列表的開頭,將目的地添加到列表的末尾,並將列表提供給subprocess.Popen()。

喜歡:-

list1=blob.blob("*.py")
list1=['cp']+list1+['/home/rahul']
xx=subprocess.Popen(list1)

它將完成工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM