1、逐行读取文件内容
filename = 'pi_digits.txt'
with open(filename) as file_object:
for line in file_object:
print(line)`
输出带有空白行:
3.1415926535
8979323846
643383279
可在 print 语句中使用 rstrip(),消除多余的空白行,结果就成
print(line.rstrip())
3.1415926535
8979323846
2643383279
2、创建一个包含文件各行内容的列表:readlines()
便可以在 with 结构外的代码使用文件内容
filename = 'pi_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
for line in lines:
print(line.rstrip())
2.1 使用文件的内容。
将文件内容使用readline()方法存进列表中,再创建一个变量pi_string,循环存储文件内容。
strip()方法可以去除 变量pi_string中每行左边的空格。
filename = 'pi_30_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
pi_string = ''
for line in lines:
pi_string += line.strip()
print(pi_string)
print(len(pi_string))
使用line.**rstrip()**方法只能去除每行末尾的空格,如下结果
3.1415926535 8979323846 2643383279
但,使用了line.strip(),则可以去除每行左边的空格,结果如下
3.141592653589793238462643383279
2.2 从文件内容汇总读取并创建一个包含数字的字符串
print(pi_string[:52] + “…”) 打印出第1个到第52个数字
3、写入文件
**3.1 Python 只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数 str() 将其转换为字符串格式。
filename = 'programming.txt'
with open(filename, 'w') as file_object:
file_object.write("I love programming.")
open(filename,‘w’) :w为写入模式,还可以是读取模式 ( ‘r’ )、 写入模式 ( ‘w’ )、 追加模式 ( ‘a’ )或让你能够读取和写入文件的模式( ‘r+’ )。
若写入多行文件,则需要换行符 \n
filename = 'programming.txt'
with open(filename, 'w') as file_object:
file_object.write("I love programming.\n")
file_object.write("I love creating new games.\n")
programming.txt 结果如下:
I love programming.
I love creating new games.
3.2 附加模式(a)将内容添加到原来的文件中
filename = 'programming.txt'
with open(filename, 'a') as file_object:
file_object.write("I also love finding meaning in large datasets.\n")
file_object.write("I love creating apps that can run in a browser.\n")
programming.txt 结果如下
I love programming.
I love creating new games.
I also love finding meaning in large datasets.
I love creating apps that can run in a browser.
4 Python os.listdir() 方法
os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
import os, sys
# 打开文件
path = "/var/www/html/"
dirs = os.listdir( path )
# 输出所有文件和文件夹
for file in dirs:
print file
如果目录下有中文目录,打印时遇到乱码解决方法:
cPath = os.getcwd()
# 如果目录名字为中文 需要转码处理
uPath = unicode(cPath,'utf-8')
for fileName in os.listdir(uPath) :
print fileName
5 os.path.splitext()用法–分离文件名(包括路径)与扩展名
import os
path_01='E:\STH\Foobar2000\install.log'
path_02='E:\STH\Foobar2000'
res_01=os.path.splitext(path_01)
res_02=os.path.splitext(path_02)
print(res_01)
print(res_02)
结果如下
('E:\\STH\\Foobar2000\\install', '.log')
('E:\\STH\\Foobar2000', '')
6 os.path.split():按照路径将文件名和路径分割开
os.path.split(‘PATH’)
1.PATH指一个文件的全路径作为参数:
2.如果给出的是一个目录和文件名,则输出路径和文件名
3.如果给出的是一个目录名,则输出路径和为空文件名
import os
#os.path.split()返回文件的路径和文件名
fname,fename=os.path.split("E:/lpthw/zedshaw/ex19.py")
print("fname",fname)
print("fename",fename)
结果如下
E:/lpthw/zedshaw
ex19.py
7 路径拼接os.path.join()函数的用法
os.path.join()函数:连接两个或更多的路径名组件
1.如果各组件名首字母不包含’/’,则函数会自动加上
2.如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃
3.如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾
**
Demo1
**
import os
Path1 = 'home'
Path2 = 'develop'
Path3 = 'code'
Path10 = Path1 + Path2 + Path3
Path20 = os.path.join(Path1,Path2,Path3)
print ('Path10 = ',Path10)
print ('Path20 = ',Path20)
输出
Path10 = homedevelopcode
Path20 = home\develop\code
**
Demo2
**
import os
Path1 = '/home'
Path2 = 'develop'
Path3 = 'code'
Path10 = Path1 + Path2 + Path3
Path20 = os.path.join(Path1,Path2,Path3)
print ('Path10 = ',Path10)
print ('Path20 = ',Path20)
输出
Path10 = /homedevelopcode
Path20 = /home\develop\code
**
Demo3
**
import os
Path1 = 'home'
Path2 = '/develop'
Path3 = 'code'
Path10 = Path1 + Path2 + Path3
Path20 = os.path.join(Path1,Path2,Path3)
print ('Path10 = ',Path10)
print ('Path20 = ',Path20)
输出
Path10 = home/developcode
Path20 = /develop\code
**
Demo4
**
import os
Path1 = 'home'
Path2 = 'develop'
Path3 = '/code'
Path10 = Path1 + Path2 + Path3
Path20 = os.path.join(Path1,Path2,Path3)
print ('Path10 = ',Path10)
print ('Path20 = ',Path20 )
输出
Path10 = homedevelop/code
Path20 = /code