python入门文件读取与写入_Python 文件读写基础

文件与文件路径

>>> import os

>>> os.makedirs(os.path.join('E:\\','path','pythonTest'))##创建 E:\\path\\pythonTest 文件夹

>>> os.path.abspath('.')## 当前目录的绝对路径

'D:\\work\\Python\\Python36'

>>> os.path.abspath('.\\abc')## 当前目录下abc文件夹的绝对路径

'D:\\work\\Python\\Python36\\abc'

>>> os.path.abspath('abc')## 与上面等同

'D:\\work\\Python\\Python36\\abc'

>>> os.getcwd()## 当前路径

'D:\\work\\Python\\Python36'

>>> os.chdir(os.path.join('E:\\','python','project'))## 修改当前路径

>>> os.path.abspath('.')## 当前路径的绝对地址

'E:\\python\\project'

>>> os.path.abspath('..')## ..表示返回上一级

'E:\\python'

>>> os.path.isabs('.')## 判断是否为绝对路径, . 是相对路径

False

>>> os.path.isabs(os.path.abspath('.'))## 直接获取绝对路径做判断

True

>>> os.path.relpath(os.getcwd(),'D:\\')## D盘到当前目录的相对地址

Traceback (most recent call last):

File "", line 1, in os.path.relpath(os.getcwd(),'D:\\')

File "D:\work\Python\Python36\lib\ntpath.py", line 585, in relpath

path_drive, start_drive))

ValueError: path is on mount 'E:', start on mount 'D:'## 上面已将当前路径改为 'E:\\python\\project' 当前路径不能跨盘符

## 获取相对路径可以理解为第二个路径如何到达第一个路径

>>> os.path.relpath(os.getcwd(),'e:\\')## e:\\需要进 python\\project 可以到 E:\\python\\project

'python\\project'

>>> os.path.relpath(os.getcwd(),'e:\\sources')## e:\\sources 先 .. 后退到 e: ,然后 \\python\\project 到 E:\\python\\project

'..\\python\\project'

>>> os.path.relpath(os.getcwd(),'e:\\abcdefg')## e:\\abcdefg 这个路径不存在,但不影响获取相对地址

'..\\python\\project'

目录名称与基本名称

>>> path=os.path.join('E:\\','path','pythonTest','abc.txt')

>>> os.path.basename(path)## 基本名称

'abc.txt'

>>> os.path.dirname(path)## 目录名称

'E:\\path\\pythonTest'

>>> os.path.split(path)## 同时获取目录名称与基本名称的元组

('E:\\path\\pythonTest', 'abc.txt')

>>> os.path.dirname(path),os.path.basename(path)## 等同于上面

('E:\\path\\pythonTest', 'abc.txt')

>>> path.split(os.path.sep)## 返回所有目录层级

['E:', 'path', 'pythonTest', 'abc.txt']

查看文件大小和文件夹内容

>>> os.path.getsize(os.path.join('E:\\','path','pythonTest','abc.txt'))

84

>>> os.path.getsize(os.path.join('E:\\','path','pythonTest'))## E:\\path\\pythonTest 是一个文件夹,不会读取文件夹里面内容

0

>>> os.listdir(os.path.join('E:\\','bugs'))## 查看 E:\\bugs 目录下所有文件及文件夹,返回一个列表

['images', 'index.html', 'layui', 'prism.css', 'prism.js', 'res']

## 统计 E:\\path 这层目录下的文件大小

>>> totalSize=0

>>> for filename in os.listdir(os.path.join('E:\\','path')):

totalSize+=os.path.getsize(os.path.join('E:\\','path',filename))

>>> print(totalSize)

164

>>> os.path.exists(os.path.join('E:\\'))## 判断路径是否存在

True

>>> os.path.exists(os.path.join('E:\\','path','abc.txt'))## 也可以判断文件是否存在

True

>>> os.path.exists(os.path.join('E:\\','abc'))## 不存在 E:\\abc 文件夹

False

>>> os.path.isfile(os.path.join('E:\\','path','pythonTest','abc.txt'))## 判断路径是否为文件

True

>>> os.path.isdir(os.path.join('E:\\','path','pythonTest','abc.txt'))## 判断路径是否为目录

False

>>> os.path.isdir(os.path.join('E:\\','path','pythonT'))## 不存在 pythonT

False

>>> os.path.isdir(os.path.join('E:\\','path','pythonTest'))

True

## 统计 E:\\path 下所有文件及文件夹内所有文件大小

import os

totalSize=0

def totalFile(path):

global totalSize## 全局变量,计算总和

for file in os.listdir(path):## 循环目录下所有文件及文件夹

fdPath=os.path.join(path,file)## 获取地址:1.文件;2.文件夹

if os.path.isdir(fdPath):## 判断地址是否为文件夹

totalFile(fdPath)## 如果是文件夹,递归目录内文件(夹)

elif os.path.isfile(fdPath):## 判断地址是否为文件

totalSize+=os.path.getsize(fdPath)## 是文件则获取大小,统计

totalFile(os.path.join('E:\\','path'))

print(totalSize)

文件读写

>>> file=open(os.path.join('E:\\','path','abc.txt'))

>>> file.read()## 一次性读取文件 abc.txt 内容,每行间隔 \n

'胜利大街弗兰克斯较多发\nlsjdfkls拉克丝\n胜利大街弗兰克斯减肥的\n老师的减肥了开始放大'

>>> file.readline()

''

>>> file.readline()

''

>>> file.readlines()

[]

>>> file.read()## 内容被一次读取,后面无法再读取到内容

''

>>> file.close()## 关闭

>>> file=open(os.path.join('E:\\','path','abc.txt'))

>>> file.readline()## 读取一行数据

'胜利大街弗兰克斯较多发\n'

>>> file.readline()

'lsjdfkls拉克丝\n'

>>> file.readline()

'胜利大街弗兰克斯减肥的\n'

>>> file.readlines()

['老师的减肥了开始放大']

>>> file.close()

>>> file=open(os.path.join('E:\\',))

Traceback (most recent call last):

File "", line 1, in file=open(os.path.join('E:\\',))

FileNotFoundError: [Errno 2] No such file or directory: 'E:\\'

>>> file=open(os.path.join('E:\\','path','abc.txt'),'w')## 向文件内写数据, w 模式代表覆盖写入

>>> file.write('abc')

3

>>> file.close()

>>> file=open(os.path.join('E:\\','path','abc.txt'),'a')## a 模式代表追加,不会覆盖原内容

>>> file.write('efg')

3

>>> file.writelines('wyt')## writelines并不会在文件中换行,换行需要在后面加 \n

>>> file.close()

>>> type(file)

>>> file=open(os.path.join('E:\\','path','abc.txt'),'w')

>>> type(file)

用 shelve 模块保存变量

用 shelve 模块,可以将 Python 程序中的变量保存到二进制的 shelf 文件中。这样,程序就可以从硬盘中恢复变量的数据。

>>> import shelve

>>> shelFile=shelve.open(os.path.join('E:\\','path','mydata'))

>>> abc=['a','b','c']

>>> shelFile['abc']=abc

>>> shelFile.close()

>>> shelFile=shelve.open(os.path.join('E:\\','path','mydata'))

>>> shelFile['abc']

['a', 'b', 'c']

>>> list(shelFile.keys()),list(shelFile.values())

(['abc'], [['a', 'b', 'c']])

>>> efg=('e','f','g')

>>> shelFile['efg']=efg

>>> shelFile.close()

>>> shelFile=shelve.open(os.path.join('E:\\','path','mydata'))

>>> shelFile['abc']

['a', 'b', 'c']

>>> shelFile['efg']

('e', 'f', 'g')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值