首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在subprocess.run上发现错误了吗?

我在subprocess.run上发现错误了吗?
EN

Stack Overflow用户
提问于 2020-12-30 01:28:16
回答 1查看 51关注 0票数 0

我有以下程序

代码语言:javascript
复制
import os
import sys
import subprocess
from pathlib import Path

program = subprocess.check_output("which gphotos-sync", shell=True).decode().strip()

home = Path(os.path.expanduser("~")) / "photos"

args = [
  "--ntfs",
  "--retry-download",
  "--skip-albums",
  "--photos-path ".",
  "--log-level", "DEBUG",
]

env = os.environ.copy()
env["LC_ALL"] = "en_US.UTF-8"

for p in home.glob("*/*"):
  print([program, *args, str(p.relative_to(home))])
  subprocess.run([program, *args, str(p.relative_to(home))], cwd=home, shell=True, env=env, stdout=sys.stdout, stderr=subprocess.STDOUT)

哪种打印

代码语言:javascript
复制
['/home/ubuntu/.local/bin/gphotos-sync', '--ntfs', '--retry-download', '--skip-albums', '--photos-path .', '--log-level DEBUG', 'rodrigo/0']
usage: gphotos-sync [-h] [--album ALBUM] [--log-level LOG_LEVEL] [--logfile LOGFILE] [--compare-folder COMPARE_FOLDER] [--favourites-only] [--flush-index] [--rescan] [--retry-download]
                    [--skip-video] [--skip-shared-albums] [--album-date-by-first-photo] [--start-date START_DATE] [--end-date END_DATE] [--db-path DB_PATH] [--albums-path ALBUMS_PATH]
                    [--photos-path PHOTOS_PATH] [--use-flat-path] [--omit-album-date] [--new-token] [--index-only] [--skip-index] [--do-delete] [--skip-files] [--skip-albums] [--use-hardlinks]
                    [--no-album-index] [--case-insensitive-fs] [--max-retries MAX_RETRIES] [--max-threads MAX_THREADS] [--secret SECRET] [--archived] [--progress] [--max-filename MAX_FILENAME]
                    [--ntfs]
                    root_folder

如您所见,gphotos-sync需要root_folder (最后一个参数)。但是如果我手动运行打印的命令行,程序就能正常工作

/home/ubuntu/.local/bin/gphotos-sync --ntfs --retry-download --skip-albums --photos-path . --log-level DEBUG rodrigo/0

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-12-30 01:32:21

当一个选项接受一个参数时,它们要么需要是单独的参数,要么必须使用--option=parameter语法。你不能把它们放在用空格分隔的同一个参数中。

所以它应该是:

代码语言:javascript
复制
args = [
  "--ntfs",
  "--retry-download",
  "--skip-albums",
  "--photos-path", ".",
  "--log-level", "DEBUG",
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65496217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档