2010-03-19 2 views
6

Я хочу создать каталог (с именем «загружен») в моем рабочем каталоге; не эта рабочая ?:Python: Создание каталогов

import os 
os.mkdir('~/Desktop/downloaded/') 
+0

Если реж Desktop находится на другом языке ????? как найти на рабочем столе на любом языке? – Ernie

+0

Для кода, который выполняет эквивалент «mkdir -p», см. Http://stackoverflow.com/q/600268/319741 –

ответ

14

Вы не можете просто использовать ~ Вы должны использовать os.path.expanduser заменить ~ с правильным путем.

+1

Таким образом, вы можете заменить этот код на 'os.mkdir (os.expanduser ('~/Desktop/Downloaded/')) '. – LeafStorm

+3

@Leafstorm 'os.path.expanduser', а не' os.expanduser'. –

8

Применение

import os 
os.mkdir(os.path.expanduser("~/Desktop/downloaded")) 

~ символ является POSIX оболочки конвенции, которая представляет собой содержимое переменной домашней обстановке. Таким образом, при вводе в оболочку:

$ mkdir ~/Desktop/downloaded 

это то же самое, набрав

$ mkdir $HOME/Desktop/downloaded 

Попробуйте изменить переменную HOME среды, чтобы убедиться, что я говорю.

Поскольку это соглашение оболочки, это не то, что не относится ни к ядру, ни к Python, а к функции python os.mkdir - это просто оболочка вокруг системного вызова ядра mkdir(2). В качестве удобства Python предоставляет функцию os.path.expanduser, чтобы заменить тильду содержимым HOME env var.

$ HOME=/tmp 
$ python 
Python 2.6.4 (r264:75706, Mar 2 2010, 00:28:19) 
[GCC 4.3.4] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> os.path.expanduser("~/dada") 
'/tmp/dada' 
1

еще один способ, с помощью os.environ

import os 
home=os.environ["HOME"] 
path=os.path.join(home,"Desktop","download") 
try: 
    os.mkdir(path) 
except IOError,e: 
    print e 
else: 
    print "Successful" 
Смежные вопросы