Системный вызов Python (os.system) не работает должным образом с одной и той же строкой в ​​двух случаях - PullRequest
2 голосов
/ 28 июня 2019

Я делаю одно и то же в этих двух случаях, но случай 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")

1 Ответ

1 голос
/ 28 июня 2019

Этот фрагмент создаст аргумент /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)
...