python之工作目录和文件引用
1.参考
还没细看
2.不考虑exe打包
sys.path[0] #顶层运行脚本的绝对目录 os.path.split(os.path.realpath(__file__))[0] #目前所在脚本的绝对目录
os.path.dirname(os.path.realpath(__file__))
3.兼容 pyinstaller xxx,py -F 所生成的exe可执行程序
生成exe之后需要手动生成子文件夹和相应的txt等非py文件
在任一脚本中(含子目录)获取顶层运行的exe或py文件的绝对目录
import os, sys
if sys.argv[0][-3:] == 'exe':
(top_dir, _) = os.path.split(sys.argv[0])
if top_dir == '':
top_dir = os.getcwd() #os.path.abspath('.') 也行
else:
top_dir = sys.path[0]
4.其他
(1)连接目录
# with open(os.path.join(os.getcwd(), '/sub/sub.txt')) as f: #fail
# with open(os.path.join(os.getcwd(), 'sub/sub.txt')) as f: #pass
with open(os.path.join(os.getcwd(), './sub/sub.txt')) as f: #pass
print f.read()
(2)根据需要临时修改sys.path
sys.path.append('G:/xxx')
5.测试py
G:\test\path
____file:path.py
____dir:sub
________file:__init__.py
________file:sub_path.py
path.py
#!usr/bin/env python
#coding:utf-8 import os, sys
from sub.sub_path import print_sub_path def print_path():
print 'in path.py'
print '{:<20}: {}'.format('os.getcwd()', os.getcwd()) #命令提示符显示目录
print '{:<20}: {}'.format('os.path.abspath(".")', os.path.abspath('.')) #命令提示符显示目录
print '{:<20}: {}'.format('sys.argv[0]', sys.argv[0]) #命令提示符显示目录>之后除去python的所有字符 print '{:<20}: {}'.format('sys.path[0]', sys.path[0]) #自动将顶层运行脚本所在路径 加入sys.path即寻找模块的搜索路径列表
print '{:<20}: {}'.format('realpath(__file__)', os.path.split(os.path.realpath(__file__))[0]) #目前所在脚本的绝对目录 if __name__ == '__main__':
print_path()
print_sub_path()
raw_input(':')
sub.py
#!usr/bin/env python
#coding:utf-8 import os, sys def print_sub_path():
print 'in sub/sub_path.py' print '{:<20}: {}'.format('os.getcwd()', os.getcwd())
print '{:<20}: {}'.format('os.path.abspath(".")', os.path.abspath('.'))
print '{:<20}: {}'.format('sys.argv[0]', sys.argv[0]) print '{:<20}: {}'.format('sys.path[0]', sys.path[0])
print '{:<20}: {}'.format('realpath(__file__)', os.path.split(os.path.realpath(__file__))[0]) #目前所在脚本的绝对目录 if __name__ == '__main__':
print_sub_path()
运行结果:
C:\Users\win7>python G:\test\path\path.py
in path.py
os.getcwd() : C:\Users\win7
os.path.abspath("."): C:\Users\win7
sys.argv[0] : G:\test\path\path.py
sys.path[0] : G:\test\path
realpath(__file__) : G:\test\path
in sub/sub_path.py
os.getcwd() : C:\Users\win7
os.path.abspath("."): C:\Users\win7
sys.argv[0] : G:\test\path\path.py
sys.path[0] : G:\test\path
realpath(__file__) : G:\test\path\sub
: C:\Users\win7>cd g:
G:\ C:\Users\win7>g: G:\>python test/path/path.py
in path.py
os.getcwd() : G:\
os.path.abspath("."): G:\
sys.argv[0] : test/path/path.py
sys.path[0] : G:\test\path
realpath(__file__) : G:\test\path
in sub/sub_path.py
os.getcwd() : G:\
os.path.abspath("."): G:\
sys.argv[0] : test/path/path.py
sys.path[0] : G:\test\path
realpath(__file__) : G:\test\path\sub
: G:\>cd test/path G:\test\path>python path.py
in path.py
os.getcwd() : G:\test\path
os.path.abspath("."): G:\test\path
sys.argv[0] : path.py
sys.path[0] : G:\test\path
realpath(__file__) : G:\test\path
in sub/sub_path.py
os.getcwd() : G:\test\path
os.path.abspath("."): G:\test\path
sys.argv[0] : path.py
sys.path[0] : G:\test\path
realpath(__file__) : G:\test\path\sub
: G:\test\path>python G:\test\path\path.py
in path.py
os.getcwd() : G:\test\path
os.path.abspath("."): G:\test\path
sys.argv[0] : G:\test\path\path.py
sys.path[0] : G:\test\path
realpath(__file__) : G:\test\path
in sub/sub_path.py
os.getcwd() : G:\test\path
os.path.abspath("."): G:\test\path
sys.argv[0] : G:\test\path\path.py
sys.path[0] : G:\test\path
realpath(__file__) : G:\test\path\sub
:
6.测试exe
运行结果:
#直接双击 exe
in path.py
os.getcwd() : G:\test\path
os.path.abspath("."): G:\test\path
sys.argv[0] : G:\test\path\path.exe
sys.path[0] : C:\Users\win7\AppData\Local\Temp\_M5247~1
realpath(__file__) : G:\test\path
in sub/sub_path.py
os.getcwd() : G:\test\path
os.path.abspath("."): G:\test\path
sys.argv[0] : G:\test\path\path.exe
sys.path[0] : C:\Users\win7\AppData\Local\Temp\_M5247~1
realpath(__file__) : C:\Users\win7\AppData\Local\Temp\_M5247~1\sub
: C:\Users\win7>G:\test\path\path.exe
in path.py
os.getcwd() : C:\Users\win7
os.path.abspath("."): C:\Users\win7
sys.argv[0] : G:\test\path\path.exe
sys.path[0] : C:\Users\win7\AppData\Local\Temp\_M83A1~1
realpath(__file__) : C:\Users\win7
in sub/sub_path.py
os.getcwd() : C:\Users\win7
os.path.abspath("."): C:\Users\win7
sys.argv[0] : G:\test\path\path.exe
sys.path[0] : C:\Users\win7\AppData\Local\Temp\_M83A1~1
realpath(__file__) : C:\Users\win7\AppData\Local\Temp\_M83A1~1\sub
: C:\Users\win7>cd g:
G:\ C:\Users\win7>g: G:\>cd test/path G:\test\path>path.exe
in path.py
os.getcwd() : G:\test\path
os.path.abspath("."): G:\test\path
sys.argv[0] : path.exe
sys.path[0] : C:\Users\win7\AppData\Local\Temp\_M9C69~1
realpath(__file__) : G:\test\path
in sub/sub_path.py
os.getcwd() : G:\test\path
os.path.abspath("."): G:\test\path
sys.argv[0] : path.exe
sys.path[0] : C:\Users\win7\AppData\Local\Temp\_M9C69~1
realpath(__file__) : C:\Users\win7\AppData\Local\Temp\_M9C69~1\sub
: G:\test\path>G:\test\path\path.exe
in path.py
os.getcwd() : G:\test\path
os.path.abspath("."): G:\test\path
sys.argv[0] : G:\test\path\path.exe
sys.path[0] : C:\Users\win7\AppData\Local\Temp\_M9C4E~1
realpath(__file__) : G:\test\path
in sub/sub_path.py
os.getcwd() : G:\test\path
os.path.abspath("."): G:\test\path
sys.argv[0] : G:\test\path\path.exe
sys.path[0] : C:\Users\win7\AppData\Local\Temp\_M9C4E~1
realpath(__file__) : C:\Users\win7\AppData\Local\Temp\_M9C4E~1\sub
:
python之工作目录和文件引用的更多相关文章
- GNU make简要介绍①指定变量、自动推导规则、清除工作目录过程文件
Makefile简介 在执行make之前需要一个命名为Makefile的特殊文件来告诉make需要做些什么. 当使用 make 工具进行编译时,工程中以下几种文件在执行 make 时将会被编译 (重新 ...
- 如何查看与更改python的工作目录?
在编写<机器学习实战>第二章kNN代码时遇到问题,即在自己编写好模块后,使用ipython进行import时,出现以下错误: 可知若想找到该模块,需将工作目录改变到当前文件(模块py文件) ...
- python基础--管理目录与文件
1) 文件夹 os.listdir() #显示文件夹下所有文件 os.getcwd() #获取当前工作目录 os.chdir() #切换目录 os.mkdir() #建立目录 os.path.exis ...
- [Python]切换工作目录|python将目录切换为脚本所在目录
Python使用os.chdir命令切换python工作目录 代码示例: In []: import os In []: os.system("pwd") /home/wangju ...
- python生成器 获取 目录下文件
# os.walk()和os.list 都是得到所有文件的列表, 如果目录下文件特别多, 上亿了, 我们就需要生成器的方式获取 # 要求目录下面没有目录, 会递归到子目录下面找文件, (如果有子目录可 ...
- python找递归目录中文件,并移动到一个单独文件夹中,同时记录原始文件路径信息
运营那边有个需求. 下载了一批视频文件,由于当时下载的时候陆陆续续创建了很多文件夹,并且,每个文件夹下面还有子文件夹以及视频文件,子文件夹下面有视频文件或者文件夹 现在因为需要转码,转码软件只能对单个 ...
- 使用Python实现不同目录下文件的拷贝
目标:要实现将一台计算机的共享文件夹中的文件备份到另一台计算机,如果存在同名的文件只要文件的大小和最后修改时间一致,则不拷贝该文件 python版本:Python3.7.1 python脚本: fro ...
- Python 调用上级目录的文件
程序结构如下: – src |-- mod1.py |-- lib | |-- mod2.py |-- sub | |-- test.py 具体代码如下: 在test.py里调用mod1 mod2 i ...
- [Python] 目录和文件操作
在Linux系统下用Python写脚本,肯定不能避免各种与目录和文件夹有关的操作.为了以后方便查阅,简单地针对Python中与目录和文件夹有关的操作进行汇总. 需要实现导入的模块为: import o ...
随机推荐
- MongoVUE 使用教程
MongoVUE是一款针对MongoDB的客户端工具,现在连接数据库也叫数据模式有2种方法,一种是B/S结构的数据库,通过网页就可以访问.另外一种就是基于C/S客户端的连接方式,本次为大家分享的这一个 ...
- FFmpeg configure: rename cuda to ffnvcodec 2018-03-06
FFmpeg version of headers required to interface with Nvidias codec APIs. Corresponds to Video Codec ...
- 解决mysql 主从数据库同步不一致的方法
接着上文 配置完Mysql 主从之后,在使用中可能会出现主从同步失败的情况. mysql> show slave status\G Slave_IO_Running: Yes Slave_SQL ...
- 分布式全文检索引擎之ElasticSearch
一 什么是 ElasticSearch Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elas ...
- Python装饰器执行顺序详解
探究多个装饰器执行顺序 装饰器是Python用于封装函数或代码的工具,网上可以搜到很多文章可以学习,我在这里要讨论的是多个装饰器执行顺序的一个迷思. 疑问 大部分涉及多个装饰器装饰的函数调用顺序时都会 ...
- Inspector did not run successfully.
装虚拟机,卡在这个报错1天了, server没有问题,其余所有的agent都不能运行. 这部分没有日志,只有单纯的报错信息,omg,百度.bing一顿骚操作,还是没有解决问题. 因为默认安装jdk1. ...
- python按照字典排序
d = {'a':1,'b':4,'c':2} 方法一: sorted(d.items(),key = lambda x:x[1],reverse = True) 方法二: import operat ...
- js-DOM事件
var EventUtil = { addHandler:function(elm,type,handler){//添加事件 if(elm.addEventListener){ elm.addEven ...
- js——数组操作
把教程里的api看了一遍,感觉记住了,又感觉没有记住...后来发现,如果给自己提需求,或许不错.想想对于一个数组,可能会用到哪些操作呢?基本的操作就是增删改查吧(有点像sql) 1. 创建数组 ...
- STM32L476应用开发之六:电池SOC检测
便携式设备由于使用需求而配备了锂电池,但使用过程中需要掌握电源的状态才能保证设备正常运行.而且在电池充放电的过程中,监控电池的充放电状态也是保证设备安全的需要. 1.硬件设计 电池SOC检测是一个难题 ...