python 文件操作

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
     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值