2010-03-19 111 views
6

我想在我的桌面目录中创建一个目录(名为'downloaded');是不是这方面的工作?:Python:创建目录

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

如果桌面dir是在其他语言?????如何在任何语言的桌面上定位? – Ernie 2011-01-30 18:45:56

+0

对于执行“mkdir -p”等效操作的代码,请参阅http://stackoverflow.com/q/600268/319741 – 2012-03-29 14:16:30

回答

14

你不能简单地用~必须使用os.path.expanduser有一条合适的路径来代替~

+1

因此,您可以用'os.mkdir(os.expanduser('〜/ Desktop/Downloaded /'))'。 – LeafStorm 2010-03-19 22:32:41

+3

@Leafstorm'os.path.expanduser',而不是'os.expanduser'。 – 2010-03-19 23:06:49

8

使用

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

~字符是一个POSIX外壳约定,代表HOME环境变量的内容。所以,当你在一个shell中键入:

$ mkdir ~/Desktop/downloaded 

是一样的打字

$ mkdir $HOME/Desktop/downloaded 

尝试改变HOME环境变量来验证我说的话。

由于这是一个shell约定,它不是内核专门处理的东西,也不是Python,Python的os.mkdir函数只是内核mkdir(2)系统调用的一个包装。作为一个方便,Python提供了os.path.expanduser函数来将HOME代码变量的内容替换为代字号。

$ 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"