首页 > 解决方案 > 在两种情况下,Python 系统调用 (os.system) 不能按预期使用相同的字符串

问题描述

在这两种情况下,我正在做完全相同的事情,但情况 1 不起作用。任何人都知道为什么 Python 会这样?

# Case 1
setup_folder = "/home/svimal/Data/ABoVE/100_catchments/VIC_setup/05MG001/"
os.system('../VIC_4.1.2.k.Purdue/vicNl -g  ' + setup_folder + "/Global_Param")
# Case 2
os.system("../VIC_4.1.2.k.Purdue/vicNl -g /home/svimal/Data/ABoVE/100_catchments/VIC_setup/05MG001/GlobalParam")

标签: pythonpathsystem-callsos.system

解决方案


该片段将创建一个参数/home/svimal/Data/ABoVE/100_catchments/VIC_setup/05MG001//Global_Param- 请注意//前面的“Global_Param”。

您可以os.path.join用来避免自己处理这些斜线:

arg = os.path.join('/home/svimal/Data/ABoVE/100_catchments/VIC_setup/05MG001/', 'Global_Param')
os.system('../VIC_4.1.2.k.Purdue/vicNl -g  ' + arg)

推荐阅读