zoukankan      html  css  js  c++  java
  • Python之文件路径问题

    1  文件路径

    大家都知道使用 os.path() 模块可以获取文件所在路径,在项目中经常会遇到。

    但是最近遇到一个问题,使用相同的代码(如下,代码功能是获得上一级目录),在PyCharm上运行与跟服务器上使用 nohup 指令运行得到的结果完全不一样,分析后才得知是因为 __file__ 的问题。

    1 import os
    2 print(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
    • 若是使用 nohup 指令,在项目的根目录运行,得到的结果是与在PyCharm上运行的结果相同;
    • 若是使用 nohup 指令, cd 进到项目中py文件所在目录运行,得到的结果与在PyCharm上运行的结果不同。

    为避免今后混淆,特意使用统一的代码获得当前目录和上一级目录,经过测试,该代码不管在什么地方运行都能保持一致,并且准确。

    1 import os
    2 print(os.path.abspath(os.path.dirname(__file__)))  # 当前目录
    3 print(os.path.abspath(os.path.dirname(os.path.abspath(os.path.dirname(__file__)))))  # 上一级目录

    2  导入包路径

    当代码中有导入自己写的模块,使用PyCharm运行是正常的,但是一旦使用 nohup 指令在服务器运行,就会提示没有找到模块,这是因为当前模块所在路径并不在PYTHONPATH中。

    解决方法:在程序最上面手动将模块的路径添加到PYTHONPATH中。

    import sys
    sys.path.append("/home/hadoop/andrew")  # 将自写的项目添加进PYTHONPATH 否则在服务器中import的话找不到

    3  得到指定目录下所有文件的个数(包括子文件夹)

    这个网上有很多方法,这里列举出其中一种,在使用时直接copy即可。

    1 import os
    2 def countFile(dir):
    3     tmp = 0
    4     for item in os.listdir(dir):
    5         if os.path.isfile(os.path.join(dir, item)):  # 当前文件夹
    6             tmp += 1
    7         else:
    8             tmp += countFile(os.path.join(dir, item))  # 子文件夹
    9     return tmp
  • 相关阅读:
    lambda函数
    linux 自学系列:wc命令
    linux 自学系列:chmod 权限操作
    linux 自学系列:创建、删除目录、移动、更名文件或目录
    linux 自学系列:vi、vim编辑工具
    《架构之美》学习随笔:设计第一步
    安装memcache 时提示error while loading shared libraries: libevent2.0解决办法
    《架构之美》学习随笔:保证质量
    linux 自学系列:环境变量设置
    logging模块学习笔记:logger 对象、日志等级
  • 原文地址:https://www.cnblogs.com/qijunhui/p/11396544.html
Copyright © 2011-2022 走看看