文档章节

Python之文件路径问题

o
 osc_ogi0qclx
发布于 2019/08/22 20:11
字数 487
阅读 15
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Kotlin Class「T」

fun <T> gotoMainPage( context: Activity, postId: String, mainActivity: Class<T> ) { val intent = Intent(context, ADSplash......

osc_qatrfv06
13分钟前
0
0
小赢科技2020年一季报:由盈转亏1.96亿,M3以下贷款逾期率翻倍达6.71%

来源 | 新金融一线 北京时间6月29日,美股上市互金平台小赢科技公布了今年一季报未经审计的财务业绩报告。财报显示,该公司2020财年第一财季净营收同比下降31.9%至5.29亿元(人民币,下同);...

镭射财经
14分钟前
5
0
kotlin实现单例

/** * 功能:单例实现 */class Singleton private constructor() { companion object { val instance by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { Si......

osc_5nscij7v
14分钟前
7
0
七月算法机器学习 11 决策树、随机森林、 adaboost

目录 主要内容 决策树 信息增益 三种决策树学习算法 决策树的例子 决策树的过拟合 Bootstraping Bagging的策略 随机森林 提升的概念 Adaboost 举例 主要内容 决策树  决策树学习采用的是自...

osc_2718ydlo
15分钟前
10
0
支持千万人次毫秒级交易,360金融的系统性能如何做到?

提到“系统性能”问题,便立即联想到刚刚过去的“618”购物狂欢,电商公司在面对高密集度并发交易行为时,依托强大的系统性能以保持用户在网购与支付过程中平台的系统稳定性的极致案例。系统...

osc_jrhexi1r
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部