python 操作文件与目录

一、文件写入:

with open('a.txt','w') 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) #如导入的模块中间出现了变动,则需如此重载


五、读取二进制文件数据,下面以通达信的 .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']



猜你喜欢

转载自blog.csdn.net/a649344475/article/details/80807575