码迷,mamicode.com
首页 > 编程语言 > 详细

[Python] Pitfalls: Be Careful with os.chdir

时间:2014-12-08 15:24:51      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   sp   for   strong   

One thing you need to keep in mind is that when using os.chdir to change the working directory of current programme (script), make sure if we need to come back to the current working directory again.

Using os.chdir to change the current working directory anywhere in the programme will effect permanently, regardless if you are using it in a function or not, see the following example:

 1 import os
 2 
 3 def chdir_in_func():
 4     print "Before chaning, in func"
 5     print os.getcwd()
 6     os.chdir("/home/")
 7     print "After chaning, in func"
 8     print os.getcwd()
 9 
10 
11 if __name__ == "__main__":
12     print "Before changing, outside func"
13     print os.getcwd()
14     chdir_in_func()
15     print "After changing, outside func"
16     print os.getcwd()

The output of this script will be:

Before changing, outside func
/home/chdir_in_func
Before chaning, in func
/home/chdir_in_func
After chaning, in func
/home
After changing, outside func
/home

We can see that in the function, if we changes the directory, the current working directory is changed too.

A suggested good practice to avoid such unconsciously mistake is that alway change back to your original working directory after the actions done in the new directory, unless you know you need to stay there for next operations. I would strongly recommend that in functions, if you have to change directory, always changes it back before returning:

def func():
    cwd_save = os.getcwd()
    os.chdir(new_dir)
    # Actions in new_dir
    os.chdir(cwd_save)
    return True

 

[Python] Pitfalls: Be Careful with os.chdir

标签:style   blog   io   ar   color   os   sp   for   strong   

原文地址:http://www.cnblogs.com/cheese-bacon/p/4150983.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!