python - Python subprocess.Call() 带空格参数,如“-charset FileName=latin”
问题描述
使用 Windows 10,我想使用 subprocess.call() 从 python 向 exiftool.exe 发送以下标志:
-charset 文件名=拉丁文
以下命令行条目工作正常:
exiftool -charset FileName=latin -overwrite_original -createdate="1960:05:01 12:00:00"
"Tif format EXIF sample\Førskole IMG031.tif"
通过 python 设置调用也可以。它会发出警告,但无论如何都会运行:
subprocess.call(
['exiftool',
f'-P',
f'-overwrite_original_in_place',
f'-CreateDate={new_date}',
file_or_folder_path])
Gives Warning:
C:\source\image-file-date-bulk-edit\Tif format EXIF sample\Førskole IMG031.tif
FileName encoding not specified. Use "-charset FileName=CHARSET"
Warning: FileName encoding not specified - C:\source\image-file-date-bulk-edit\
Tif format EXIF sample\Førskole IMG031.tif
但是当我将“-charset FileName=CHARSET”添加到我的 subprocess.call() 时,它似乎被进程忽略了:
subprocess.call(
['exiftool',
f'-charset FileName=latin',
f'-P',
f'-overwrite_original_in_place',
f'-CreateDate={new_date}',
file_or_folder_path])
Charset flag is ignored and warning persists:
C:\source\image-file-date-bulk-edit\Tif format EXIF sample\Førskole IMG031.tif
Warning: Tag 'charset' is not defined
FileName encoding not specified. Use "-charset FileName=CHARSET"
Warning: FileName encoding not specified - C:\source\image-file-date-bulk-edit\Tif format EXIF sample\Førskole IMG031.tif
为什么f'-charset FileName=latin'在后一种情况下被忽略?
解决方案
尝试:
subprocess.call(
['exiftool',
'-charset', 'FileName=latin',
f'-P',
f'-overwrite_original_in_place',
f'-CreateDate={new_date}',
file_or_folder_path])
-charset
并且FileName=latin
在将它们作为列表传递时应该是两个不同的参数。
推荐阅读
- javascript - 单击链接时关闭全屏菜单覆盖
- android - 从活动更新适配器中的文本视图
- powershell - 如何使用 PowerShell (PowerCLI) 确定 VM 自定义规范状态?
- mysql - 将键与 MySQL 中的表匹配
- mpi - 来自 rank 1 和 tag 3 的消息被截断;收到 31050432 个字节但缓冲区大小为 30844800
- hybris - hybris 使 cronjob 执行 n 小时,然后 n+1 小时
- c# - JsonConvert 库无法序列化 json
- javascript - 订阅更改,但需要从使用 Service 的位置查看变量?
- python - 字母组合作为python中的参数
- xpath - 从其后代的文本中获取一个元素