一个小脚本遇到的问题之 Windows 命令行下的脚本执行


     Windows 命令行下面执行python确实是个麻烦事,反正不方便。添加系统环境变量就不多说了。这里说一下python在命令行执行的时候的一些位置。
     我这里遇到的问题就是:在之前的程序中,配置文件的路径是相对路径,当然放在一个目录下面啦。直接F5没错,但是在cmd下面就错了.No such file or directory.我都吐血了。
     下面的内容参考了Stack Overflow上面的回答。具体地址为:http://stackoverflow.com/a/12201952
     然后查查呗,问问谷歌。原来是python找文件的时候不是从你的脚本所在的位置,而是从他自己的工作目录。可以用 os.getcwd() 查看现在的工作目录是哪里?所以最好的方法就是绝对路径,绝对无敌。不过如果你的文件又被你移来移去,那你就等死吧。
     当然你如果很任性,那就使用 os.chdir() 来切换到你的配置文件所在的位置,然后一切就顺理成章了。

    上面的没看懂?没关系,看看下面的你会发现我说得很明白了。
    更详细的python脚本地址的获取。http://www.elias.cn/Python/GetPythonPath?from=Develop.GetPythonPath 干货摘录如下:

总之,举例来讲,os.getcwd()、sys.path[0] (sys.argv[0])和__file__的区别是这样的:
假设目录结构是:
 C:\test
  |
  [dir] getpath
    |
    [file] path.py
    [dir] sub
      |
      [file] sub_path.py
然后我们在C:\test下面执行python getpath/path.py,这时sub_path.py里面与各种用法对应的值其实是:
os.getcwd() “C:\test”,取的是起始执行目录
sys.path[0]或sys.argv[0] “C:\test\getpath”,取的是被初始执行的脚本的所在目录
os.path.split(os.path.realpath(__file__))[0] “C:\test\getpath\sub”,取的是__file__所在文件sub_path.py的所在目录

猜你喜欢

转载自lovekaiyuan.iteye.com/blog/2286593