烟台网站建设公司地址,网上做试卷的网站,python源码分享网站,hishop官网文件1. 文件2. 文件的基本操作3. 读取文件open()3.1 文件指针: 标记从哪一个位置开始读取数据.3.2 文件的打开方式mode3.3 文件按行读取3.3.1 readline()3.3.2 readlines()4.文件输出f.write(),print()5.文件复制5.1 小文件复制#xff08;搬家#xff09;5.2 大文件复制搬家5.2 大文件复制搬家5.3 shutil.copy()5.4 shutil.rmtree()6.os 模块6.1 改变工作目录os.chdir()6.2 文件重命名os.rename()6.3 删除文件os.remove()6.4 删除空路径os.removedirs()6.5 目录列表os.listdir()6.6 创建目录os.mkdir()6.7 删除目录os.rmdir()6.8 判断某个目录是否存在,如果不在,创建这个目录6.9 os.path.split(xxx/xx/xxxx)6.10 os.path.isdir()7.CSV文件8.JSON文件9.文本文件的编码方式10.在Python2.x中使用中文11.eval()本系列博文来自学习《Python基础视频教程》笔记整理视屏教程连接地址http://yun.itheima.com/course/273.htmlopen 不仅能打开txt文件还能打开.csv.JSON 文件。呀。
1. 文件
计算机的文件就是保存在 长期存储设备 上的一段数据长期存储设备包括:硬盘 U盘 移动硬盘 光盘. 文件的作用:将数据长期保存下来,在需要的时候使用. cpu 要使用 存在硬盘中文件,需要先将文件加载到内存.
常见两种类型的文件 : 文本文件 和 二进制文件 文本文件 : 可以只用文本编辑软件查看的 ,如Python源程序 , 本质上还是二进制文件 二进制文件 : 保存的内容不是给人直接看的,而是提供给其他软件使用的.例如: 图片文件 音频文件 视屏文件,等不能直接用文本编辑器查看,要有相应的应用软件.
2. 文件的基本操作
在计算机中操作文件的固定套路: 1.打开文件 2.读写文件:读-将文件内容加载到内存.写-将内存内容写到文件 3.关闭文件
在Python中 常用的操作文件的1个函数,3个方法.
名称类型说明f.open()函数打开文件,并返回文件操作对象文件句柄f.read()方法将文件内容读到内存f.write()方法将内存内容写入文件f.close()方法关闭文件,不关闭会占用系统可打开文件句柄数open函数打开文件,并返回文件操作对象,后面的三个方法通过 文件对象 来调用.
文件句柄的其他方法
方法说明f.flush()刷新输出缓存f.read([count])指定读出count个字节的文件内容f.readline()读出一行信息f.readlines()读出所有行信息f.seek(offset[,where])从where开始移动文件指针offset个单位where0文件开始处1当前位置2文件结尾f.tell()获得文件指针的位置f.writelines(list)把list中的字符串一行一行写入文件连续写入文件没有换行
3. 读取文件open()
open函数 的第一个参数是 要打开的文件名(要带扩展名). 如果文件存在,返回文件操作对象,如果文件不存在,会抛出异常. read方法可以一次性 读入并返回文件的所有内容 如果忘记关闭文件,会造成资源浪费,和后续操作困难所以打开之后,应该写关闭语句,然后再去写读写操作语句
# 1.打开文件
fileopen(test.txt)# 2.读取文件内容
textfile.read()
print(text)# 3.关闭文件,如果忘记关闭文件,会造成资源浪费,和后续操作困难所以打开之后,应该写关闭语句,然后再去写读写操作语句
file.close()
3.1 文件指针: 标记从哪一个位置开始读取数据.
第一次打开文件时,文件直至会指向 文件的开始位置. 执行read方法后,文件指针会指向 读取内容的末尾
注意:如果执行了一次read方法,读取了所有内容,再次调用 read方法时,不能够读取文件内容了. 因为第一次读取后,文件指针移动到了文件末尾.
# 1.打开文件
fileopen(test.txt)# 2.读取文件内容
textfile.read()
print(text)
print(len(text))print(-*50)
textfile.read()
print(text)
print(len(text))# 3.关闭文件,如果忘记关闭文件,会造成资源浪费,和后续操作困难所以打开之后,应该写关闭语句,然后再去写读写操作语句
file.close()输出:
hello python
hallo19
--------------------------------------------------0实际上并没有说如何解决这个问题,或者进一步操作
3.2 文件的打开方式mode fileopen(“文件名.扩展名”,“打开方式”) 打开文件的方式:open 函数需要传递的第二个参数.如果不指定打开方式,默认以只读方式 打开,并返回文件对象
打开方式说明r以只读方式打开,文件指针在文件头w以只写方式打开,如果文件存在会覆盖, 如果文件不存在创建新的文件a(append)以追加方式打开,文件指针在文件尾. 如果文件不存在创建新的文件r以读写方式打开,文件指针在文件头w以读写方式打开,如果文件存在会覆盖, 如果文件不存在创建新的文件a以读写方式打开,文件指针在文件尾. 如果文件不存在创建新的文件读写方式打开,频繁操作文件指针,会影响文件读写效率.开发时,更多会以只读 或者只写 的方式来操作文件.
3.3 文件按行读取
3.3.1 readline()
read 方法会把文件的所有内容都读入到内存,如果文件太大,会使得内存占用率非常高.可以改用逐行读取的方法.readline()方法可以一次读取一行内容,方法执行后会把文件指针移动到下一行. 代码示例:
fileopen(test.txt)
while True:textfile.readline()print(text)# 判断是否读到内容if not text:breakfile.close()3.3.2 readlines()
data []
data1 []
fr open(readline_test.txt)
for line in fr.readlines(): # 也是全部读取吃内存line line.strip() # 去掉字符串开头或者结尾的空白符包括换行符data_line line.split(,) # 使用,分割数据并返回一个列表data_line1 list(map(int, line.split(,)))data.append(data_line)data1.append(data_line1)print(data)
print(data1)
fr.close()read(size)当size不指定时会将文件全部内容读取
readline()一次只读取一行即遇到‘\n’返回
readlines()读取整个文件并返回列表一行为一个元素
4.文件输出f.write(),print()
f open(outpu.txt, w) # 没有文件的话会新建一个
data [[1, 2], [3, 4]]
line1 ,.join(data[0])
f.write(line1 \n)
line2 ,.join(data[1])
f.write(line2 \n)# print 把原本输出到shell 的内容改输到文件中
data [[1, 2], [3, 4]]
for line in data:print(str(line[0]) , str(line[1]), filef)output.txt文件的内容
1,2
3,4
1,2
3,45.文件复制
5.1 小文件复制搬家
打开两个文件-读取原文件内容-写入目标文件-关闭两个文件。
打开文件原文件默认以只读的方式打开目标文件以只写w的方式打开如果没有目标文件会新建一个目标文件。
代码实例
# 1.打开文件
file_readopen(readme.txt)
file_writeopen(readme_copy.txt,w)
# 2.读取操作
textfile_read.read()
file_write.write(text)
# 3.关闭
file_read.close()
file_write.close()5.2 大文件复制搬家
一次性读取会给内存造成巨大的压力可以使用按行读取与写入来实现这个功能。
# 1.打开文件
file_readopen(readme.txt)
file_writeopen(readme_copy.txt,a)# 2.读取操作按行操作
while True:textfile_read.readline()if not text:breakfile_write.write(text) # 从头开始写是文件指针的问题设定在本页的结尾打开,如一追加的方式加原文件的内容到新文件。# 3.关闭
file_read.close()
file_write.close()5.3 shutil.copy() import shutil shutil.copy(文件1文件2) 对文件1的内容和权限都进行copy。
5.4 shutil.rmtree()
删除一个文件夹如果文件夹里面有文件也会一起被删掉比较6.3中的删除。 shutil.rmtree(’./cyy_test/subtest2’) 6.os 模块
文件/目录的常用管理操作 在终端或者文件浏览器中可以执行的常规操作。例如创建重命名删除改变路径查看目录内容等。通过Python实现上述功能需要导入os模块。
6.1 改变工作目录os.chdir()
使用脚本运行默认的工作目录为脚本所在的目录中。可以使用chdir 改变工作目录
import os
print(os.getcwd())
# linux 命令行使用pwd来输出当前路径
os.chdir(/Users/chenyingying)
print(os.getcwd())输出
/Users/chenyingying/PycharmProjects/DataMining_python
/Users/chenyingying6.2 文件重命名os.rename() os.rename(源文件名.扩展名目标文件名.扩展名) 6.3 删除文件os.remove() os.remove(文件名.扩展名) demo:删除文件而保留目录结构
import os
gos.walk(/home/abc/Desktop/cyy_test)
for path,dir,files in g: #路径path 文件夹中的文件名files和文件夹名dir都是listprint(path,dir,files)while files![]:for file in files:print(file)os.remove(os.path.join(path,file))files.remove(file)
print(end)由顶至下的遍历所有文件夹
6.4 删除空路径os.removedirs()
删除一个空文件夹如果文件夹里有文件或者文件夹是删除不成功的。 os.removedirs(’./cyy_test/subtest123’) 删除一个非空路径如果文件夹里面有文件也会一起被删掉 shutil.rmtree(’./cyy_test/subtest2’) 6.5 目录列表os.listdir() os.listdir(目录名) os.listdir(“.”) # 查看当前目录的目录列表 6.6 创建目录os.mkdir() os.mkdir(“目录名”) 6.7 删除目录os.rmdir() os.rmdir(”目录名“) 6.8 判断某个目录是否存在,如果不在,创建这个目录
import os
log_path os.getcwd() /Logs/ #当前文件夹下的Logs文件夹if not os.path.exists(log_path) : #判断文件夹或文件os.makedirs(log_path) #创建参考资料:https://blog.csdn.net/xielifu/article/details/81013536
6.9 os.path.split(“xxx/xx/xxxx”)
将路径分割出来,一次分割一个级别,每次分割得到两个元素的tuple. import os aos.getcwd()a
/home/pp/Desktop/testsplit/aaa/bbb aos.getcwd()/1.txta
/home/pp/Desktop/testsplit/aaa/bbb/1.txt bos.path.split(a)b
(/home/pp/Desktop/testsplit/aaa/bbb, 1.txt) cos.path.split(b[0])c
(/home/pp/Desktop/testsplit/aaa, bbb)
6.10 os.path.isdir()
目录名要查看的目录的名字。确定目录列表中的字符串为一个目录而不是一个文件。返回的True或者False。 os.path.isdir(“xxx”) 先判断路径是否存在不存在就创建该路径
if not os.path.isdir(tarDir): os.makedirs(tarDir)7.CSV文件
excel 格式的数据将文件存成csv。以逗号作为文件分割符号。 fopen(‘data.csv’) import pandas data pandas.read_csv() 8.JSON文件
保存字典格式的数据将文件存成JSON 的格式。借助json模块实现序列化和反序列化 序列化字典格式-》字符串 json.jumps() 反序列化字符串-》字典格式 json.loads() 不带s的 json.jump()保存json文件json.load()导入json文件
import json
x {height: 176,weight: 60}
print(原x, x)
y json.dumps(x) # 转化为字符串
print(序列化x, y)
x json.loads(y)
print(反序列化x, x)f open(json_test.json, w)
json.dump(x, f)
f.close()f open(json_test.json, r)
print(从文件读取到的json, json.load(f))输出
原x {height: 176, weight: 60}
序列化x {height: 176, weight: 60} # 三者的区别并不大
反序列化x {height: 176, weight: 60}
从文件读取到的json {height: 176, weight: 60}9.文本文件的编码方式
文本文件存储的内容是基于字符编码的文件常见的编码有ASCII和UNICODE编码。 Python2.x默认使用ASCII 编码 Python3.x 默认使用UTF-8编码
Ascii编码计算机中只有25个ASCII 字符一个ASCII在内存中占一个字节8位256种组合方式 UTF-8编码使用1-6个字节来表示一个字符涵盖了地球上几乎所有地区的文字。大多数汉字会使用三个字节表示。UTF-8 是UNICODE编码的一种编码格式。
10.在Python2.x中使用中文
希望Python2.x 解释器以UTF-8的方式解析文件需要在Python2.x的开头使用一下代码解释器会以UTF-8编码来处理Python文件. 官方推荐
# *-* codingutf-8 *-*也可以写
# coding:utf8在Python2.x中,带有中文与英文混合的字符串需要在字符串的开头写一个u,来告诉编译器这是一个utf8编码的字符串.
auhello 世界11.eval()
eval 函数会将字符串当成 有效表达式 来 求值 , 并返回计算结果.
简单案例:计算器.要求用户输入一个 加减乘除混合运算,程序返回一个计算结果
input_strinput(请输入算术题)
print(eval(input_str))# 输入:(13)*5
# 输出:15 完全不需要解析表达式中的内容,自动转换计算. 注意事项: 在开发时,千万不要使用eval()直接转换**input()**的结果 在控制台上输入以下命令,会直接执行任何的终端命令 import(“os”).system(“ls”) import os
print(os.path.exists(cyy_test*)) # 不能使用通配符
print(os.path.exists(cyy_test1.py))