Python 系统调用 (os.system) 在两种情况下无法按预期使用相同的字符串
Python system call (os.system) doesn't work as expected with the same string in two cases
我在这两种情况下做的是完全相同的事情,但情况 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")
此代码段将创建一个参数 /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)
我在这两种情况下做的是完全相同的事情,但情况 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")
此代码段将创建一个参数 /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)