欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一个小脚本遇到的问题之 Windows 命令行下的脚本执行 博客分类: Python windowspythoncmd

程序员文章站 2024-03-25 23:21:22
...

     Windows 命令行下面执行python确实是个麻烦事,反正不方便。添加系统环境变量就不多说了。这里说一下python在命令行执行的时候的一些位置。
     我这里遇到的问题就是:在之前的程序中,配置文件的路径是相对路径,当然放在一个目录下面啦。直接F5没错,但是在cmd下面就错了.No such file or directory.我都吐血了。
     下面的内容参考了Stack Overflow上面的回答。具体地址为:http://*.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的所在目录