先承认..。我是蟒蛇新手。请原谅我的无知。
为了了解更多,我正在尝试编写一个脚本,该脚本将采用我最新的快速备份,并使用7-Zip创建一个名称中带有时间戳的压缩和加密文件。然后我想把它复制到两个位置。
我已经继承了名字的部分。我已经为脚本启动的时间创建了一个变量,我想将它附加到一个基本文件名中,但我似乎无法做到这一点。当我尝试的时候,脚本运行了,但是没有创建任何东西,也没有创建压缩文件。如果我删除与文件名的变量相关的内容,我确实会得到一个预期的压缩和加密文件。
这是我到目前为止所拥有的。打印命令就在那里,确保我正确地完成了‘and’和'newfile‘变量。此外,我只使用一个空的.docx文件进行测试,这样它的处理速度就会更快。
提前感谢您的任何/所有帮助或建议。我真的很感激。
from datetime import datetime
from pathlib import Path
today = datetime.now()
print(today.strftime('%Y-%m-%d %H:%M:%S'))
newfile = 'Q2020_' + (today.strftime('%m-%d-%Y_%H%M%S'))
print(newfile)
os.chdir('D:/Quicken Backups')
print(os.getcwd())
import subprocess
cmd= ['C:\\Program Files\\7-Zip\\7z.exe', 'a', '-t7z', '-mx9', '"D:\\Quicken Backups\\Quicken2020\\" + newfile ".7z"', '-ppassword', '-mhe', 'D:\\Quicken Backups\\test.docx']
subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)发布于 2020-09-29 23:14:51
你有没有想过使用一个压缩的python包,比如zipfile
通过这种方式,您不需要打开一个子流程
import zipfile
dest_zip_folder = '2020_backup.zip' # new file name
file_to_zip = 'D:\\Quicken Backups\\test.docx'
zipfile.ZipFile(dest_zip_folder, mode='w').write(file_to_zip)如果您不想这样使用,我在您的代码中看到一个错误。
newfile后缺少+号
cmd = [ ...., .... + newfile + '.7zip', ... ]也可以尝试一下subprocess.call()
import subproccess
cmd = [. . . . . .]
subprocess.call(cmd)发布于 2020-09-30 03:24:17
在Windows变量语法和运行子进程方面花了很多时间,但我最终还是让它正常工作了,输出了一个文件名中带有日期/时间戳的加密文件。
为了排除故障,我在cmd命令中添加了/K,这样完成后窗口就不会关闭。这对解决这个问题有很大帮助。
感谢每一个看过我的帖子的人。我希望有一天这个帖子能帮助其他人!
import os
from pathlib import Path
os.chdir('D:/Quicken Backups')
print(os.getcwd())
import subprocess
cmd = subprocess.Popen('cmd.exe /K ""C:\\Program Files\\7-Zip\\7z.exe" a -t7z -mx9 "D:\\Quicken Backups\\Quicken2020\\Q2020_%DATE:~4,2%-%DATE:~7,2%-%DATE:~-4%_%TIME:~0,2%%TIME:~3,2%%TIME:~8%.7z" -ppassword -mhe "D:\\Quicken Backups\\test.docx"')https://stackoverflow.com/questions/64121832
复制相似问题