Python基础 基础文件操作

Posted 摘星者的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础 基础文件操作相关的知识,希望对你有一定的参考价值。

     今天学习python下对文件的基础操作,主要从open函数、File对象的属性、文件定位、简单操作、举例说明几个步骤开始学习,下面开始进入今天的主题:

一、open函数介绍

      open函数主要是打开一个文件,创建一个file对象,相关的方法可以调用它进行读写 。

语法格式如下:

1
2
3
file object = open(文件名,打开文件的模式)
 
file object  = with open (文件名,打开文件的模式) as 变量名

   两种语法格式的不同在于下面这种方法不用输入f.close()函数来关闭文件。

在介绍文件打开模式之前介绍两个python的函数:

   计算机中一个字节是8位,那么在不同的字符编码占用的字节不同,在计算机中为了节省内存空间,汉字一般是用16进制表示,

        UTF-8:一个汉字占计算机的三个字节

        GBK:一个汉字占两个字节

bytes():将字符串转换成字节类型

1
2
3
4
5
6
7
8
n = bytes("你好", encoding="utf-8")      #将字符串转换成utf-8的字节码
print(n)
n = bytes("你好", encoding="gbk")        #将字符串转换成gbk的字节码
print(n)
 
结果:
b\'\\xe4\\xbd\\xa0\\xe5\\xa5\\xbd\'
b\'\\xc4\\xe3\\xba\\xc3\'

str():可以将字节类型转换回字符串

1
2
3
4
5
new_str = str(bytes("你好", encoding="utf-8"), encoding="utf-8")
print(new_str)
 
结果:
你好

下面来看一下打开文件的模式:

二、File对象的属性和方法

 

      下面是file对象相关的所有属性的列表,举例说明这些属性的用法:

1
2
3
4
5
6
7
8
f = open(\'user.txt\',\'a\')
print("文件名:",f.name)
print("文件是否已关闭:",f.closed)
f.close()
 
结果:
文件名: user.txt
文件是否已关闭: False

      下面介绍一下file对象的方法

  1,file.read()

1
2
3
4
5
6
f = open(\'user.txt\',\'r\')
print(f.read())                   # 从文件中读取出字符串
 
结果:
UserName=\'jack\'
PassWord=\'123456\'

  2,file.readline()

1
2
3
4
5
f = open(\'user.txt\',\'r\')
print(f.readline())               #读取一行
 
结果:
UserName=\'jack\'

  3,file.readlines()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
f = open(\'user.txt\',\'r\')
print(f.readlines())       #把文件每一行作为一个list的一个成员,并返回这个list。
 
结果:
["UserName=\'jack\'\\n", "PassWord=\'123456\'\\n"]
 
f = open(\'user.txt\',\'r\')
for i in f.readlines():          #也可以通过循环调用readline()来实现的
    print(i)
 
结果:
UserName=\'jack\'
 
PassWord=\'123456\'

4,file.write()

      write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。注意:Write()方法不在字符串的结尾不添加换行符(\'\\n\'): 

1
2
3
4
5
6
7
8
f = open(\'user.txt\',\'a\')          #追加的模式打开文件
f.write("age:18\\n")     
f.close()
 
结果:
UserName=\'jack\'
PassWord=\'123456\'
age:18

  5,file.writelines()

     用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表;

     换行需要制定换行符 \\n。

1
2
3
4
5
6
7
8
9
10
11
f = open(\'user.txt\',\'a\')
print("文件名:",f.name)
seq = ["age=19\\n","sex=man\\n"]
f.writelines(seq)
f.close()
 
结果:
UserName=\'jack\'
PassWord=\'123456\'
age=19
sex=man

  6,file.flush() 

       刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

1
2
3
4
f =open(\'user\',\'r+\')
f.write(\'123\')
f.flush()                      #通过强制刷新,123已经写入到文件中
name = input(\'input:\')         #在这会一直等待用户输入

  7,file.truncate( [size] )

      截取文件,截取的字节通过size指定,默认为当前文件位置。

 

1
2
3
4
f =open(\'user\',\'r+\',encoding="utf-8")
f.seek(3)                     #将指针移动到第3个位置
f.truncate()                  #指针以后清空
f.close()

三、文件定位、重命名和删除文件

      (一)、文件定位

        file.tell() : 方法告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后。

        file.seek(offset [,from]): 方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。

        如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
f = open("user.txt",\'r+\')               #读写的模式打开文件
str = f.read(10)
print("读取的字符串是:",str)
  
position = f.tell()                     #找到当前指针位置
print("指针位置:",position)
  
position = f.seek(5,0)                  #将指针移动到从开头往后移动5个字节
str=f.read(10)
print(str)
f.close()
 
结果:
读取的字符串是: weibo.com.
指针位置: 10
.com.cn

      (二)、重命名和删除文件

 Python的os模块提供了执行文件处理操作的方法,比如重命名和删除文件。

        rename()方法:rename()方法需要两个参数,当前的文件名和新文件名。 

1
2
import os
os.rename("user.txt","test.txt")

        remove()方法:删除文件,需要提供要删除的文件名作为参数。

1
2
import os
 os.remove("test.txt")            #删除已经存在的文件

     (三)、知识点拾遗

    在python2.7以后with open() 可以同时打开两个文件,具体操作如下:

1
2
3
4
5
6
with open(\'user\',\'r\',encoding=\'utf-8\') as f1,open(\'user1\',\'w\',encoding=\'utf-8\')as f2:
    for line in f1:                                 #将f1一行一行的读取出来
        new_str=line.replace(\'haifeng\',\'idx\')       #替换其中的某个字符串
        f2.write(new_str)#                          #将替换好的文件写到新文件里
os.rename(\'user\',\'user.bak\')                        #备份旧文件
os.remove(\'user1\',\'user\')                           #发布新文件

(c)2006-2024 SYSTEM All Rights Reserved IT常识