2025年2月14日 星期五 甲辰(龙)年 腊月十四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

python 操作文件与目录

时间:04-01来源:作者:点击数:46

一、查找某个文件夹的指定后缀文件,是否包含指某字段:

  • def find_file(route,suffix,keyword):
  • """ 查询某个文件夹,指定后缀文件,是否包含指定的关键字
  • route:文件夹路径,suffix:文件后缀,keyword:关键字; """
  • import os
  • os.chdir(route)
  • d = os.popen('findstr/s "{}" *.{}'.format(keyword,suffix))
  • d=d.read().split()
  • return d

执行结果:

二、文件写入:

file是文件的路径加名称, mode就是操作文件的模式,主要有r,w,rb,wb等,细节网上很多,buffering = -1是用于指示访问文件所采用的缓存方式。0表示不缓存;1表示只缓存一行,n代表缓存n行。如果不提供或为负数,则代表使用系统默认的缓存机制。

  • file_name = 'a.txt'
  • with open(file=file_name,mode='w',buffering=-1) as f:
  •     f.write('hello')

三、文件读取:

  • with open('a.txt','r') as f:
  • data = f.read()

四、序列化操作:

  • import pickle
  • d = ['pickle']
  • with open('a.txt','wb') as f:
  • pickle.dump(d,f) # 序列化
  • with open('a.txt','rb') as f:
  • ud = pickle.load(f) # 反序列化

五、os 与 sys模块常用操作

import os #os模块

os.getcwd() #查看当前工作目录

os.chdir("path") #改变工作目录

os.listdir("path") #列举指定目录的文件名,'.'(当前),'..'(上一级)

os.environ['COMPUTERNAME'] # 获取计算机名称

# 关闭进程,2种方法

  • from signal import SIGTERM
  • pid = os.getpid()
  • os.kill(pid,SIGTERM) # 方法1
  • os.system('taskkill /f /pid %s'%pid) # 方法2

#列出指定目录后缀为.py的文件,2种方法

[n for n in os.listdir("path") if n.endswith('.py')] #方法1

import glob #方法2

glob.glob('path'+'/*.py') #和方法1不同的是,它会把路径也列出

os.mkdir("path") #创建单层目录

os.makedirs("path\\path\\...") #创建多层目录

os.remove("path") #删除文件

os.rmdir("path") #删除单层非空目录

os.removedirs('path\\path\\...') #删除多层非空目录

os.rename('a','y') #将a重命名为y

os.system("cmd") #运行系统的shell命令

os.popen("cmd").read() # 执行系统的shell命令,并返回结果

os.sep #输出操作系统的路径分隔符; os.linesep #输出当前系统终止符

os.stat(file) # 获取文件属性

os.startfile(file) # 打开文件

#os.path模块

os.path.join(r"C:\python","1.txt")#组合成完整路径:C:\\python\\1.txt

os.path.split(r"a\l.txt") #分割路径和文件名:"a","1.txt"

os.path.getsize('1.py') #获取文件的字节尺寸

os.path.getatime(file) #获取文件最近访问时间

os.path.getctime(file) #获取文件创建时间

os.path.getmtime(file) #获取文件最近修改时间

..exists(path) #判断是否存在此目录或文件

..isdir(path) #判断是否存在此目录

..isfile(path) #判断是否存在此文件

# sys 模块

sys.argv # 实现从程序外部向程序传递参数。

sys.exit([arg]) # 程序中间的退出,arg=0为正常退出。

sys.getdefaultencoding() # 获取系统当前编码

sys.setdefaultencoding() # 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding('utf8'),此时将系统默认编码设置为utf8。

sys.getfilesystemencoding() # 获取文件系统使用的编码方式

sys.path # 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。

sys.platform # 获取当前系统平台。

import sys

sys.path.append("python") #模块a7在桌面的python文件夹

import a7 #导入a7模块,注:从桌面一个py文件导入

from imp import reload

reload(a7) #如导入的模块中间出现了变动,则需如此重载

六、struct模块,读取二进制文件数据,下面以通达信的 .day 文件为例

  • from struct import unpack
  • import os
  • from datetime import datetime
  • def read_data(fname,code):
  • ''' 读取通达信day数据 '''
  • data = []
  • with open(fname, 'rb') as f:
  • buf = f.read()
  • num = len(buf) # 总长度
  • no = num / 32 # 分块长度
  • b = 0 # 开始指针
  • e = 32 # 每一个小块的长度
  • for i in range(int(no)):
  • a = unpack('IIIIIfII', buf[b:e])
  • dd=datetime(a[0]//10000,a[0]%10000//100,a[0]%100)
  • openPrice = a[1] / 100.0
  • high = a[2] / 100.0
  • low = a[3] / 100.0
  • close = a[4] / 100.0
  • amount = a[5] / 100.0
  • vol = a[6] / 100.0
  • # 把数据添加到列表
  • # [日期时间,开盘价,最高价,最低价,收盘价,成交额,成交量,股票代码]
  • data.append([dd, openPrice, high, low, close, amount, vol, code])
  • b += 32
  • e += 32
  • return data
  • fname = r'D:\新建文件夹\vipdoc\sz\lday\sz000001.day'
  • code = 'sz000001'
  • data=read_data(fname,code)
  • print(data[0])
  • Out:[datetime.datetime(1991, 12, 23, 0, 0), 27.7, 27.9, 27.6, 27.8, 35306.0, 1270.0, 'sz000001']

附:

1.struct模块格式化对照表

提示:

signed char(有符号位)取值范围是 -128 到 127(有符号位)

unsigned char (无符号位)取值范围是 0 到 255

2.字节顺序,大小和校准

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门