Манипулирование путями в питоне - PullRequest
1 голос
/ 12 июля 2011

Я пишу сценарий Python 2.5 в Windows, чей CurrentDir = C:\users\spring\projects\sw\demo\753\ver1.1\011\rev120\source мой файл test.py.Из этого пути я хотел бы получить доступ к файлам по этому пути: C:\users\spring\projects\sw\demo\753\ver1.1\011\rev120\Common\

Я пытался использовать os.path.join, но это не работает, и я из документов я понимаю, почему.Так что может быть лучшим питоническим решением для этого?

currentdir = os.getcwd()    
config_file_path =  os.path.join(currentdir,"\\..\\Common")

Ответы [ 3 ]

2 голосов
/ 12 июля 2011

Ваша проблема может быть решена с помощью os.path.join, но вы используете ее неправильно.

currentdir = os.getcwd()    
config_file_path =  os.path.join(currentdir,"\\..\\Common")

"\\..\\Common" не относительный путь, так как начинается с \.

Вам необходимо присоединиться к ..\\Common, который является относительным путем.

Обратите внимание, что os.path.join - это не простая функция конкатенации строк, вам не нужно вставлять промежуточные строки.

Так что фиксированный код будет:

config_file_path =  os.path.join(currentdir,"..\\Common")

или, альтернативно:

config_file_path =  os.path.join(currentdir, "..", "Common")
2 голосов
/ 12 июля 2011
from os.path import dirname, join
join(dirname(dirname(__file__)), 'Common')

должно работать.

0 голосов
/ 12 июля 2011

Попробуйте это:

joined = os.path.join('C:\\users\\spring\\projects\\sw\\demo\\753\\ver1.1\\011\\rev120\\source', '..\\Common\\')
# 'C:\\users\\spring\\projects\\sw\\demo\\753\\ver1.1\\011\\rev120\\source\\..\\Common\\'
canonical = os.path.realpath(joined)
# 'C:\\users\\spring\\projects\\sw\\demo\\753\\ver1.1\\011\\rev120\\Common'
...