python 文件遍历 拷贝 重命名 读写操作

python 文件遍历:

import os
import shutil
import os.path
rootpath="/home/xx/Documents/flowers"
filelists=os.listdir(rootpath)
for file in filelists:#一级目录或文件遍历
print file
print os.path.join(rootpath,file)#一级目录下文件夹或文件的完整路径

sourcefulpath=/home/xx/Documents/1.jpg
distfulpath=/home/xx/Documents/2.jpg
shutil.copy(sourcefulpath,distfulpath)#文件的拷贝
os.rename(sourcefulpath,distfulpath)#文件重命名

for parent,dirnames,filenames in os.walk(rootpath):
    print(parent)#所有文件,文件夹的父目录 先是最外层的,后面是顺序执行的
    print(dirnames)#所有文件夹名,不包含单文件
    print(filenames)#所有文件的名字,每个该文件的父目录下的所有文件为一个list集合
    #遍历所有文件夹下的所有文件,全路径
    for filename in filenames:
        print(os.path.join(parent,filename))

python文件读写:

import os
import shutil
import os.path
txtfile="/home/xx/Documents/1.txt"
f1=open(txtfile,"r")#(1)只能读,不能写;(2)文件不存在时会报错.
f2=open(txtfile,'w')#(1)只能写,不能读;(2)写的时候会把原来文件的内容清空;(3)当文件不存在时,会创建新文件。
f3=open(txtfile,'a')#(1)不能读;(2)可以写,是追加写,即在原内容末尾添加新内容;(3)当文件不存在时,创建新文件。
f4=open(txtfile,'r+')#r+ 模式的指针默认是在文件的开头,如果直接写入,则会覆盖源文件,通过read() 读取文件后,指针会移到文件的末尾,再写入数据就不会有问题了.
(1)文件不存在时会报错;(2)可以读,也可以写,是覆盖写,会把文件最前面的内容覆盖
f5=open(txtfile,'w+')#(1)可以写,也可以读;(2)写的时候会把原来文件的内容清空;(3)当文件不存在时,会创建新文件。
f6=open(txtfile,'a+')#(1)可读可写;(2)写的时候是追加写,即在原内容末尾添加新内容;(3)当文件不存在时,创建新文件。
a=f1.readline()
print(a)
b=f1.read()#所有都读出来,上下行分开
b=f1.readline()#读取一行 f.readline() 读取到最后如果没有数据会返回空
b=f1.readlines()#是一个list队列每个后面有\n
print(b)
f1.close()

f=open(txtfile,"a",encoding='utf-8')#有中文出现乱码时加上encoding就可以了
f.write("hello,world!")#写入字符,末尾没有加换行符
l=['\nhello baby\n','hello teacher\n','hello master\n']
f.writelines(l)#这里如果list本身没有换行,空格,分隔符
f.close()

#f.seek(偏移量,选项)
#选项=0,表示将文件指针指向从文件头部到“偏移量”字节处
#选项=1,表示将文件指针指向从文件的当前位置,向后移动“偏移量”字节
#选项=2,表示将文件指针指向从文件的尾部,向前移动“偏移量”字节

#f.flush()    将修改写入到文件中(无需关闭文件)
#f.tell()   获取指针位置

#为了方便,避免忘记close掉这个文件对象,可以用下面这种方式替代
with open(txtfile,"r") as f:    #设置文件对象
    # str = f.read()  # 读取文件,同文件格式中相同,行隔开打印出
    # str=f.readline() #读取文件的一行,碰到后面换行符截止
    str=f.readlines()#str返回一个数组,包括换行符,类似:['hello,world!\n', 'hello,hhg\n']
    print(str)


#按行读取整个文件
#第一种方法
f = open("data.txt","r")   #设置文件对象
line = f.readline()
line = line[:-1]
while line:             #直到读取完文件
    line = f.readline()  #读取一行文件,包括换行符
    line = line[:-1]     #去掉换行符,也可以不去
f.close() #关闭文件
#第二种方法
data = []
for line in open("data.txt","r"): #设置文件对象并读取每一行文件
    data.append(line)               #将每一行文件加入到list中
#第三种方法
f = open("data.txt","r")   #设置文件对象
data = f.readlines()  #直接将文件中按行读到list里,效果与方法2一样
f.close()             #关闭文件


#将文件读入数组中
import numpy as np
data = np.loadtxt("data.txt")   #将文件中数据加载到data数组里
#数组写入文件中
#将数组写入文件
import numpy as np
#第一种方法
np.savetxt("data.txt",data)     #将数组中数据写入到data.txt文件
#第二种方法
np.save("data.txt",data)        #将数组中数据写入到data.txt文件


#单层列表写入文件
data = ['a','b','c']
#单层列表写入文件
with open("data.txt","w") as f:
    f.writelines(data)

#双层列表写入文件
#第一种方法,每一项用空格隔开,一个列表是一行写入文件
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("data.txt","w") as f:                                                   #设置文件对象
    for i in data:                                                                 #对于双层列表中的数据
        i = str(i).strip('[').strip(']').replace(',','').replace('\'','')+'\n'  #将其中每一个列表规范化成字符串
        f.write(i)                                                                 #写入文件
#第二种方法,直接将每一项都写入文件
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("data.txt","w") as f:                                                   #设置文件对象
    for i in data:                                                                 #对于双层列表中的数据
        f.writelines(i)                                                            #写入文件

参考:
https://blog.csdn.net/xxn_723911/article/details/78795033
https://www.cnblogs.com/WonderHow/p/4403727.html
https://www.cnblogs.com/youyou0/p/8921719.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值