python文件与文件系统

文件操作基础

open(类型参数)

参数名意 义
filename要打开的文件名
mode可选参数,文件打开模式
bufsize可选参数,缓冲区大小
encoding文件编码类型
errors编码错误处理方法
newlines控制通用换行符模式的行为
closefd控制在关闭文件是否彻底关闭文件

mode是打开文件的操作模式,入下

模式字符表示的操作
r只读(默认)
w可写,会清楚文件内容
a附件数据
b二进制数据模式
x新建一个文件,可写
+打开文件直接更新
t文本模式

这些字符可以组合在一起表示对文件的操作模式,如’rb’表示以只读模式打开二进制文件;‘wt’表示以可写模式打开文本文件等。
bufsize为0时表示打开文件不用缓冲,为1时表示进行缓冲,为负值时则使用系统默认值,为任何其他值则表示使用缓冲的字节数。
encoding 表示文件编码的类型,如‘gbk’、‘utf-8’等,以避免读取文件内容出现乱码。newline表示换行符模式,
因为在不同额系统下,换行符有所不同,换行符主要有‘\n’、‘\r’、’\r\n’等,

常用文件操作及其功能

文件操作功能描述
file.read([n])将整个文件读入到字符串中,或指定n字节
file.readline([n])读入文件的一行到字符串中
file.readlines()将整个文件按行读入到列表中
file.write(s)向为文件中写入字符串
file.wirtelines(lines)向文件中写入一行数据列表
file.close()关闭打开的文件

例子:

def file_hd1(name="python.txt"):
	f = open(name)
	res = 0
	i = 0
	for line in f:
		i +=i
		print('第%s行的数据为:' % line.strip(),line)
		res += int(line)
		
	print('这些数的和为:',res)
	f.close()
	
if __name__ =='__main__':
	file_hd1()
	

fileinput操作文件
fileinput模块提供了一个以行模式循环处理一个或多个文件内容的功能,它实现了对文件中的‘懒惰’迭代,读取时不需要把文件内容放入内存,这样可以提高程序的效率
fileinput模块中常用的函数有:
input() :返回能够用于迭代一个或多个文件中的所有行的对象
filename(): 返回当前文件的名称
lineno(): 返回当前读取的行的数量
isfirstline(): 返回当前行,判断是否是文件的第一行,是当前文件的第一行时返回真值,反之返回假值
filelineno(): 返回当前读取行在文件中的行数
fileinput 也支持上下文管理器,可以使用with语句来进行操作,二不用子啊使用后手工关闭对象

import fileinput
def demo_fileinput():
	with fileinput.input(['fpa.txt','fpb.txt']) as lines:
		print("总第%d行," %fileinput.lineno(),"文件%s中第%d: "%(fileinput.filename(),fileinput.filelineno()))
		print(line.strip())
		
if __name__ == '__main__':
	demo_fileinput()
	

常用文件和目录操作

获得当前路径: os.getcwd()
获得目录中的内容 os.listdir(path)
获得当前目录的内容 os.listdir()
创建目录 os.mkdir(path)
删除目录 os.rmdir(path)
判断是否为目录 os.path.isdir(path)
判断是否为文件 os.path.isfile(path)
遍历某目录下的所有文件和目录 :os.walk(path)

由文件名批量获取姓名和考号

import os

filename = []
for a,b,files in os.walk('test'):
	if files:
	filenames.append([file[:-4] for file in files])
fname = 'testname'
i = 0
for files in filenames:
	f=open(fname+str(i)+.xls','w')
	for name in files:
		f.write(name[-2:]+'\t'+name[:-2]+'\n')
	f.close()
	i +=1
print("成功生成了!")

批量文件重命名

import os
perfix = 'python'
length = 2
base = 1
format = 'mdb'
# 函数PadLeft将文件名补全到指定的长度
# str为要补全的字符
# num 为要达到的长度
# padstr 未达到长度所添加的字符
def PadLeft(str,num ,padstr):
	stringLength = len(str)
	n = num - stringlength
	if n>=0:
		str=padstr*n +str
	return str 
# 为避免误操作,这里先提示用户
print('the files in %s will be renamed ' % os.getcwd())
all_files = os.listdir(os.getcwd())
print([f for f in all_files if os.path.isfile(f)]) #输出当前目录下的所有文件名
input = input('press y to continue\n') #获取用户输入
if input.lower()= 'y':
	exit()
filenames = os.listdir(os.curdir) # 获取当前目录中的内容
# 基数减1 ,为下面i=i+1在第一次执行时等于基数
i = base-1
for filename in filename:
	i = i+1
	# 判断当前路径是否为文件,并且不是“rename.py”
	if filename != "rename.py" and os.path.isfile(filename):
		name = str(i)
		name = PadLeft(name,length ,'0')	#将name补全到指定长度
		t = filename.split('.')
		m = len(t)
		if format =='':
			os.rename(filename,perfix+name+'.'+t[m-1])
		else:
			if t[m-1] == format:
				os.rename(filename,perfix+name+'.'+t[m-1])
			else:
				i=i -1 # 保证i连续
	else:
		i= i-1	#保证i连续
all_files = os.listdir(os.getcwd())
print([f for in all_files if os.path.isfile(f)])

编译为可执行文件

用py2exe 生成可执行文件
py2exe 可以将Python程序打包为Windows下独立的可执行文件
要使用py2exe ,首先要编写一个编译程序(例如编写一个名为setup.py的程序),然后在Python中运行编译setup.py
即可将需要封装的其他Python程序编译成可执行文件

#文件hello.py
import ctypes
print('Hello,Python!')

#文件setup.py
from distutils.core import setup
import py2exe
setup(console=['hello.py'])	#指定为控制台程序的主程序文件名

然后在命令提示符下执行以下命令就可以完成打包:
python setup.py py2.exe

代码中编译的语句是setup(console=[‘hello’]),方括号中的就是要编译的程序名,前面console 表示将其编译成命令行界面程序。
如果要编译GUI的可执行文件,则将console改为Windows。另外,如果需要将程序编译成 Windows服务,则可以使用service选项

用xx_freeze生成可执行文件
首先需将cx_free 下载到本机并安装后才能使用。下载地址为http://sourceforge.net/projects/cx_freeze/files/4.3.3

安装成功后,接下来就可以进行Python程序的编译操作。仍然以上节操作的hello.py为例,演示在Python3中使用cx_freeze编译为exe文件的方法。
(1)在命令行窗口切换到“hello.py”所在的目录
(2)输入以下命令:
d:\python34\Scripts\cxfreeze --target-dir=dist_cxfreeze hello.py
其中的hello.py是需要编译的程序文件,dist_cxfreeze是目标文件夹,打包回生成dist_cxfreeze目录,
在这个目录中生成编译后的可执行文件。
如果想在编译GUI界面程序运行时不出现控制台窗口的北京,则在编译时还需添加一个base-name的参数,命令入下:
c:\python34\Script\cxfreeze gui_filename.py --target-dir dist --base-name=win32GUI
py2exe 比cxfreeze 编译后的文件多一些,体积也稍大

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值