文件

文件的知识点

知识点一.如何打开文件

f = open('demo.txt', 'r', encoding='utf-8')  #以只读的形式打开

# 读取文件内容  
print(f.read())  
# 关闭文件
f.close()

另一种方式,使用'w+'模式打开文件,允许读写

f = open('demo001.txt', 'w+')  
f.write('hello world')  #写入  hello world
print(f.tell())  # 输出当前文件指针位置  
f.seek(0)  # 将文件指针移动到文件开头  
print(f.read())  # 读取文件内容  
f.close()  

使用'w+'模式写入多行

f = open('test2.txt', 'w+')  
print(f.write("hello world\n"))  
print(f.write("hello \nworld"))  
f.close()  

使用'a'模式追加内容

f = open('test2.txt', 'a')  
f.write("\npython")  
f.close()  

读取文件内容并写入到另一个文件

f1 = open('test2.txt', 'r')  
a = f1.readlines()  
f2 = open('demo001', 'w')  
f2.writelines(a)  #将f2的内容写入f1中
f1.close()  
f2.close()  

使用with语句自动管理文件关闭

with open('test2.txt', 'r') as f3:  f3为一个对象 
    print(f3.read())

知识点二.OS模块(重要 难点)

Python文件路径与操作笔记

  • 绝对路径与相对路径
  • 绝对路径:从根目录(或特定参考点)开始的! 完整!路径,例如 E:\class_45\011.文件\os模块.py。
  • 相对路径:相对于当前工作目录的路径,例如如果当前工作目录是 E:\class_45,那么 011.文件\os模块.py 就是相对路径。

示例地址

示例地址(相对路径):重庆市南岸区 #这是基于你当前路径

示例文件路径(绝对路径):E:\class_45\011.文件\os模块.py

Python中与路径操作相关的模块

  • os模块

  • os.getcwd() 显示当前路径
  • listdir(path) 展示当前目录内容
  • os.chdir(path) 改变当前路径
  • os.mkdir(文件名) 创建目录
  • os.rmdir(文件名) 删除目录
  • os.system() 使用Linux命令
  • os.remove(文件名) 删除文件
  • os.rename 重命名

路径的拼接

# 正确的路径拼接方式  
import os  
path = os.path.join('C:', 'Users', 'tongyao')  
print(path)  # 输出: C:\Users\tongyao  

# b = '\\'.join(['C:Users','tongyao'])  # 错误的方式

文件夹的创建

import os 
#用循环批量创建文件夹 
for i in range(20):
     os.mkdir('tongyao'+str(i))
#判断文件夹是否存在 存在则创建 反之亦然
if not os.path.exists(new_file):  
        os.mkdir(new_file)  #存在则创建

os.chdir(path) 改变当前路径 path为改变的路径

import os 
os.chdir(path)

os.rmdir(文件名) 删除目录

###os.rmdir(path)

os.system(+linux命令) 使用Linux命令 shell 编程

import os 
os.system("ls")

os.remove(文件名) 删除文件 与rmdir不同

os.rename 重命名

import os 
os.rename(old_file,new_file) # 旧文件名,新文件名
  • os.path 模块

  • os.path.join(path1,path2......) 路径拼接
  • os.path.dirname 所在的目录、父级目录
  • os.path.basename 基本短路径
  • os.path.abspath 绝对路径
  • os.path.relpath 相对路径
  • os.path.getsize 资源大小
  • os.path.exists 路径是否存在
  • so.path.isdir 是否是目录
  • os.path.isfile 是否是文件
  • os.path.isabs 是否是绝对路径
  • os.path.getctime、getatime、getmtime 资源时间:创建、访问、修改

路径拼接

  • os.path.join(path1, path2, ...):

该函数用于将多个路径组件合并成一个路径。

import os  
path = os.path.join('usr', 'bin', 'python3')  
print(path)  # ,如:
#'usr\\bin\\python3' 

目录和文件名操作

  • os.path.dirname(path):

返回所选路径的最后一个目录的父目录。

import os  
dirname = os.path.dirname('/usr/bin/python3')  
print(dirname)  # 输出: /usr/bin
  • os.path.basename(path):

返回给定路径的基本名(即最后一级目录的文件名)

import os  
basename = os.path.basename('/usr/bin/python3')  
print(basename)  # 输出: python3

路径的绝对与相对 abs 绝对

  • os.path.abspath(path):

返回给定路径的绝对路径。

import os  
abspath = os.path.abspath('.')  # . 表示当前目录 也可以输入相对路径
print(abspath)  # 输出当前工作目录的绝对路径 
  • os.path.relpath(end path, start path):

返回从start路径到path的相对路径。

import os  
relpath = os.path.relpath('/usr/bin/python3', '/usr')  
print(relpath)  # 输出: bin/python3

文件和目录属性

  • os.path.getsize(path):

返回指定路径的文件大小(以字节为单位)。

import os  
size = os.path.getsize('/usr/bin/python3')  
print(size)  # 输出文件大小
  • os.path.exists(path):

检查路径是否存在。

import os  
exists = os.path.exists('/usr/bin/python3')  
print(exists)  # 输出: True 或 False
  • os.path.isdir(path) 和 os.path.isfile(path):

分别检查给定路径是否是一个目录或文件。

import os  
isdir = os.path.isdir('/usr/bin')  #检查是否是一个目录
isfile = os.path.isfile('/usr/bin/python3')   #检查是否是一个文件
print(isdir)  # 输出: True 或 False  
print(isfile) # 输出: True 或 False
  • os.path.isabs(path):

检查路径是否为绝对路径。

import os  
isabs = os.path.isabs('/usr/bin/python3')  #检查目录是否有子目录
print(isabs)  # 输出: True

文件的时间属性

  • os.path.getctime(path)、
  • os.path.getatime(path)、
  • os.path.getmtime(path):

分别返回文件的创建时间、最后访问时间和最后修改时间(以秒为单位,自纪元以来的时间戳)。

import os  
ctime = os.path.getctime('/usr/bin/python3')  
atime = os.path.getatime('/usr/bin/python3')  
mtime = os.path.getmtime('/usr/bin/python3')  
print(ctime) #输出文件的最后创建的时间
print(atime) #输出文件的最后访问的时间
print(mtime) # 输出文件的最后修改的时间 且时间为时间戳

知识点三:stringIO与bytesIO

  • io Input/Output 输入,输出

假的文件 临时文件 内存中读数据是非常快的

io可以临时储存一些东西

------字符串

import io
myio = io.StringIO() # 创建一个对象进行保存读取
myio.write('hello')
# myio.seek(0)
print(myio.readlins())
print(myio.getvalue())
临时的
myio.close() # 虽然关闭对象后,内存中的数据不会立即消失(由Python的垃圾回收机制处理),但良好的实践是完成操作后关闭它。

------字节

bio = io.BytesIO()
bio.write(b'hahhaha')
print(bio.getvalue()) #输出:b'hahhaha'   注意此处的b不能少
bio.close() #关闭bio
byte_str = b'fdsfdsafds'  
text_str = byte_str.decode('utf-8')  
print(text_str)  # 输出: fdsfdsafds,没有b前缀
#当你看到在Python中打印出的字节串(如b'fdsfdsafds')时,前缀b是Python解释器用来区分字节串(bytes)和文本字符串(str)的一种方式。这个b前缀并不是字节串数据的一部分,它只是在打印或者表示字节串时被Python解释器自动添加的。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容