带变量替换的 Python subprocess.call

标签 python

代码:

MOST_POPULAR_REPORTS_LOCATION = '/tmp'
MOST_POPULAR_REPORTS_FILE = 'filename.xml'
TEMP_DATA_FILE_LOCATION = '/tmp/other_location'
subprocess.call(["/bin/cp","-a","MOST_POPULAR_REPORTS_LOCATION MOST_POPULAR_REPORTS_FILE","TEMP_DATA_FILE_LOCATION"])

我应该在 MOST_POPULAR_REPORTS_LOCATIONMOST_POPULAR_REPORTS_FILE 之间放置什么来放置 / ?我尝试了各种组合但没有成功。

我想要的是用 / 分隔两个变量,以便它通过使用变量替换来读取 /tmp/filename.xml 。我不想对路径或文件名进行硬编码,因为它们在整个脚本中使用。

最佳答案

使用os.path.join :

subprocess.call(["/bin/cp", "-a",
    os.path.join(MOST_POPULAR_REPORTS_LOCATION, MOST_POPULAR_REPORTS_FILE), 
        TEMP_DATA_FILE_LOCATION])

您不应将变量名称放在引号中,否则您将得到字符串文字。这不是 shell。

关于带变量替换的 Python subprocess.call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13919875/

相关文章:

python - 当鼠标悬停在窗口上时在 Tkinter 中显示按钮

python - 为什么在使用 matplotlib 的 DateFormatter 格式化 x 轴上的日期时会出现 "python int too large to convert to C long"错误?

python - 如何在 django 1.7.7 中使用 {{ request.path }}

python - 如何强制 'create_bulkloader_config' 获取最新的架构/数据?

python - 在 Django Rest Framework 中的序列化程序之间混合公共(public)字段

python - 使用python脚本调用cmd命令[youtube-upload]

python - 在 python 中将 r'\x74op' 等十六进制 ASCII 混合字符串转换为 'top'

python - csv.writer 出现 UnicodeEncodeError

python - 在 Cython 中实现周期性边界条件的 2D 拉普拉斯算子

python - 如何计算python中某个范围内不为零的行数?