Это команда, которую я хочу запустить под python. В основном я хочу tar
все файлы в папке:
tar -jcvf doo.tar.gz /home/user/doo/*
import subprocess
subprocess.run(['tar', '-jcvf', 'doo.tar.gz', '/home/user/doo/*'])
Возвращает следующую ошибку:
tar: Removing leading `/' from member names
tar: /home/user/doo/*: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Позже я попробовал это, используя glob
.
import subprocess, glob
subprocess.run(['tar', '-jcvf', 'doo.tar.gz', glob.glob("*")])
Возвращает следующую ошибку:
Traceback (most recent call last):
File "dd.py", line 4, in <module>
subprocess.run(['tar', '-jcvf', 'doo.tar.gz', glob.glob("*")])
File "/usr/local/lib/python3.5/subprocess.py", line 693, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/local/lib/python3.5/subprocess.py", line 947, in __init__
restore_signals, start_new_session)
File "/usr/local/lib/python3.5/subprocess.py", line 1490, in _execute_child
restore_signals, start_new_session, preexec_fn)
TypeError: Can't convert 'list' object to str implicitly
Следующий подход работает, но я не уверен, как указывать все имена файлов как одно за другим:
import subprocess, glob
subprocess.run(['tar', '-jcvf', 'doo.tar.gz', 'hello.txt', 'world.txt'])