2013-06-18 3 views
2

В настоящее время я нахожусь в положении необходимости не только изучать python на работе, но также использовать компьютер Windows для развертывания кодирования для развертывания в среде Linux.Доступ к независимой файловой системе OS

То, что я пытаюсь сделать, надеюсь, простая задача.

В корневом каталоге (на моей машине с Windows, это c: \ www) есть подкаталог «www», где мне нужно создать файл, если он не существует.

я могу получить эту работу на моей машине развития, используя этот код: file = open('c:\\www\\' + result + '.txt', 'w') где «результат» имя файла, я хочу создать, и это также работает в среде Linux, используя этот код: file = open('www/' + result + '.txt', 'w').

Если есть быстрый и простой способ изменить мой синтаксис для работы в обеих средах?

+0

Общая подсказка: Вы можете использовать косую черту вместо обратного косых черт для Windows, тоже (в сценариях Python или вызовы API, а не в оболочке, конечно) –

+0

'import platform; platform.uname();' может рассказать вам, в какой ОС вы находитесь сейчас, и вы можете соответствующим образом переключить свои переменные ... –

ответ

5

Вы можете найти os.path быть полезным

os.path.join('/www', result + '.txt') 
+1

не хотите ли вы ''/www "' обеспечить его в базовом корне? иначе это будет относиться к cwd? –

+0

Включение прямой косой черты в среде Windows было необходимо, чтобы получить ее в c: \ root. –

0

Для независимости OS вы не должны вручную жесткий код или сделать что-нибудь OS конкретные, такие как разделители путей и тому подобное. Это не вопрос обоего сред, это вопрос всех сред:

import os 
... 
... 
#replace args as appropriate 
#See http://docs.python.org/2/library/os.path.html 
file_name = os.path.join("some_directory", "child of some_dir", "grand_child", "filename") 
try: 
    with open(file_name, 'w') as input: 
     .... #do your work here while the file is open 
     .... 
     pass #just for delimitting puporses 
    #the scope termination of the with will ensure file is closed 
except IOError as ioe: 
    #handle IOError if file couldnt be opened 
    #i.e. print "Couldn't open file: ", str(ioe) 
    pass #for delimitting purposes 

#resume your work 
Смежные вопросы