精华内容
下载资源
问答
  • Python读写文件

    2019-11-20 20:48:50
    1、使用Python读写文件一项基本技能,该课程中详细讲解了三种常用的文件读写方式 2、详细讲解了os模块中如何操作文件和路径,更好的辅助完成文件的读写操作,熟练对os模块的使用
  • Python 读写文件

    千次阅读 2020-12-30 23:39:34
    Python 读写文件读文件写文件 读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件。(这个mode参数默认值就是r) 如果文件不...

    Python 读写文件

    读文件

    打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的):

     f = open('test.txt', 'r')
    

    r表示是文本文件,rb是二进制文件。(这个mode参数默认值就是r)

    如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在:

    f=open(‘test.txt’, ‘r’)

    Traceback (most recent call last):

    File “”, line 1, in

    FileNotFoundError: [Errno 2] No such file or directory: ‘test.txt’

    文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

    f.close()
    

    由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try … finally来实现:

    try:
    
    f = open('/path/to/file', 'r')
    
    print(f.read())
    
    finally:
    
    if f:
    
    f.close()
    

    但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

    with open('/path/to/file', 'r') as f:
    
    print(f.read())
    

    python文件对象提供了三个"读"方法: read()、readline() 和 readlines()。每种方法可以接受一个变量以限制每次读取的数据量。

    read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
    readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for … in … 结构进行处理。
    readline() 每次只读取一行,通常比readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 readline()。
    注意:这三种方法是把每行末尾的’\n’也读进来了,它并不会默认的把’\n’去掉,需要我们手动去掉。

    In[2]: with open(‘test1.txt’, ‘r’) as f1:

    list1 = f1.readlines()

    In[3]: list1

    Out[3]: [‘111\n’, ‘222\n’, ‘333\n’, ‘444\n’, ‘555\n’, ‘666\n’]

    去掉’\n’

    In[4]: with open(‘test1.txt’, ‘r’) as f1:

    list1 = f1.readlines()

    for i in range(0, len(list1)):

    list1[i] = list1[i].rstrip(’\n’)

    In[5]: list1

    Out[5]: [‘111’, ‘222’, ‘333’, ‘444’, ‘555’, ‘666’]

    对于read()和readline()也是把’\n’读入了,但是print的时候可以正常显示(因为print里的’\n’被认为是换行的意思)

    In[7]: with open('test1.txt', 'r') as f1:
    
    list1 = f1.read()
    
    In[8]: list1
    
    Out[8]: '111\n222\n333\n444\n555\n666\n'
    
    In[9]: print(list1)
    
    111
    
    222
    
    333
    
    444
    
    555
    
    666
    
    
     
    
    In[10]: with open('test1.txt', 'r') as f1:
    
    list1 = f1.readline()
    
    In[11]: list1
    
    Out[11]: '111\n'
    
    In[12]: print(list1)
    
    111
    

    一个python面试题的例子:

    有两个文件,每个都有很多行ip地址,求出两个文件中相同的ip地址:

    #coding:utf-8
    import bisect
    
    with open('test1.txt', 'r') as f1:
    list1 = f1.readlines()
    for i in range(0, len(list1)):
    list1[i] = list1[i].strip('\n')
    with open('test2.txt', 'r') as f2:
    list2 = f2.readlines()
    for i in range(0, len(list2)):
    list2[i] = list2[i].strip('\n')
    
    list2.sort()
    length_2 = len(list2)
    same_data = []
    for i in list1:
    pos = bisect.bisect_left(list2, i)
    if pos < len(list2) and list2[pos] == i:
    same_data.append(i)
    same_data = list(set(same_data))
    print(same_data)
    

    要点就是:(1)用with (2)处理行末的’\n’ (3)使用二分查找提高算法效率。(4)使用set快速去重。

    写文件

    写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件:

    f = open('test.txt', 'w') # 若是'wb'就表示写二进制文件
    
    f.write('Hello, world!')
    
    f.close()
    

    注意:'w’这个模式是酱紫:如果没有这个文件,就创建一个;如果有,那么就会先把原文件的内容清空再写入新的东西。所以若不想清空原来的内容而是直接在后面追加新的内容,就用’a’这个模式。

    我们可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险:

    with open('test.txt', 'w') as f:
    
    f.write('Hello, world!')
    

    python文件对象提供了两个"写"方法: write() 和 writelines()。

    write()方法和read()、readline()方法对应,是将字符串写入到文件中。
    writelines()方法和readlines()方法对应,也是针对列表的操作。它接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符。

    f1 = open('test1.txt', 'w')
    
    f1.writelines(["1", "2", "3"])
    

    此时test1.txt的内容为:123

    f1 = open('test1.txt', 'w')
    
    f1.writelines(["1\n", "2\n", "3\n"])
    

    此时test1.txt的内容为:

    1

    2

    3

    关于open()的mode参数:

    ’r’:读
    ‘w’:写
    ‘a’:追加

    ’r+’ == r+w(可读可写,文件若不存在就报错(IOError))
    ‘w+’ == w+r(可读可写,文件若不存在就创建)
    ‘a+’ ==a+r(可追加可写,文件若不存在就创建)
    对应的,如果是二进制文件,就都加一个b就好啦:
    ‘rb’  ‘wb’  ‘ab’  ‘rb+’  ‘wb+’  'ab+'

    file_obj.seek(offset,whence=0)
    

    file_obj.seek(offset,whence=0)方法用来在文件中移动文件指针。offset表示偏移多少。可选参数whence表示从哪里开始偏移,默认是0为文件开头,1为当前位置,2为文件尾部。举例:

    f = open("test1.txt", "a+")
    
    print(f.read())
    
    f.write('1')
    

    f.seek(0, 0)# 把文件指针从末尾移到开头,没有这句话下面的read()就读不到正确的东西

    print(f.read())
    
    f.close()
    

    注意:这个文件指针的改变只是作用于’r’,对’w’和’a’不会起作用,如果是’w’,那么write()永远都是从开头写(会覆盖后面对应位置的内容),是’a’的话write()就永远都是从最后开始追加。

    字符编码

    要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件:

    >>> f = open('test.txt', 'r', encoding='gbk')
    
    >>> f.read()
    

    ‘测试’

    遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。遇到这种情况,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:

     f = open('test.txt', 'r', encoding='gbk', errors='ignore')
    

    参考资料:
    https://www.cnblogs.com/programer-xinmu78/p/10661170.html

    展开全文
  • python读写文件

    千次阅读 2021-01-02 21:03:14
    文件打开模式: 打开模式 执行操作 r 以只读方式打开文件(默认) w 以写入的方式打开文件,会覆盖已存在的文件‘x如果文件已经存在,使用此模式打开将引发异常 a 以写入模式打开,如果文件存在,则在...

    文件打开模式:

    打开模式 执行操作
    r 以只读方式打开文件(默认)
    w 以写入的方式打开文件,会覆盖已存在的文件‘x如果文件已经存在,使用此模式打开将引发异常
    a 以写入模式打开,如果文件存在,则在末尾追加写入
    b 以二进制模式打开文件
    t 以文本模式打开(默认)
    + 可读模式(可添加到其他模式中使用)
    u 通用换行符支持

    文件对象方法:

    文件对象方法 执行操作
    f.close() 关闭文件
    f.read([size=-1]) 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
    f.readline([size=-1]) 从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符
    f.write(str) 将字符串str写入文件
    f.writelines(seq) 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
    f.seek(offset, from) 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
    f.tell() 返回当前在文件中的位置
    f.truncate([size=file.tell()]) 截取文件到size个字节,默认是截取到文件指针当前位置

    视频讲解地址:https://www.bilibili.com/video/BV1xs411Q799?p=29

    例如:f = open(‘F:\Desktop\123.txt’,‘w’)就会生成123.txt文件
    f.write(‘我爱学习’),可以在文件中输入我爱学习
    f.close()关闭文件。

    展开全文
  • python 读写文件

    2014-01-27 10:50:48
    python读写文件在文本不大的情况可以用正常的 open 然后读入 readline行读入 或者整体读入 read() ,readlines()  基本知识: 一:打开文件 file=open(path,'r') 说明: 第一个参数是文件名称,包括路径;...

    python读写文件在文本不大的情况可以用正常的 open 然后读入 readline行读入 或者整体读入 read() ,readlines() 

    基本知识:

    一:打开文件

    file=open(path,'r')  

    说明:

    第一个参数是文件名称,包括路径;第二个参数是打开的模式mode
    'r':只读(缺省。如果文件不存在,则抛出错误)
    'w':只写(如果文件不存在,则自动创建文件)
    'a':附加到文件末尾
    'r+':读写
    如果需要以二进制方式打开文件,需要在mode后面加上字符"b",比如"rb""wb"等

    读入中文文本是建议用codecs.open()


    二:读取内容

    f.read() ,f.readline() f.readlines() 文本较大时

    for line in f:

        line=line.split("")

    对读取的文本可以用split将行分割,strip去掉\n ,"",空格等 


    三:写入文件

    f=open(path,'w')

    f.write(str+',')

    可以+‘\n’换行,注意写入的时候 将数字等类型 转换成str 再写入


    四、文件中的内容定位

    1. f.read() 

    读取之后,文件指针到达文件的末尾,如果再来一次f.read()将会发现读取的是空内容,如果想再次读取全部内容,必须将定位指针移动到文件开始:

    1. f.seek(0)  

    这个函数的格式如下(单位是bytes):

    1. f.seek(offset, from_what)  

    from_what表示开始读取的位置,offset表示从from_what再移动一定量的距离,比如f.seek(10, 3)表示定位到第三个字符并再后移10个字符。from_what值为0时表示文件的开始,它也可以省略,缺省是0即文件开头。下面给出一

    1. f = open('/tmp/workfile', 'r+')  
    2. f.write('0123456789abcdef')  
    3. f.seek(5) # Go to the 6th byte in the file  
    4. f.read(1)   
    5. '5'  
    6. f.seek (-3, 2) # Go to the 3rd byte before the end  
    7. f.read(1)  
    8. 'd'  

    五、关闭文件释放资源

    文件操作完毕,一定要记得关闭文件f.close(),可以释放资源供其他程序使用


        

    展开全文
  • 主要介绍了Python读写文件方法,实例分析了Python读写文件常用的方法与使用技巧,需要的朋友可以参考下
  • 今天继续分享python读写文件其中的语法首先我们要学会怎么创建一个新的文件夹,这个时候就要用到os.makedirs()函数来创建一个新的文件夹(目录)。在交互式环境下输入以下代码:>>> import os>>> os...

    今天继续分享python读写文件其中的语法

    首先我们要学会怎么创建一个新的文件夹,这个时候就要用到os.makedirs()函数来创建一个新的文件夹(目录)。

    在交互式环境下输入以下代码:

    >>> import os

    >>> os.makedirs('C:\\delicious\\walnut\\waffles')

    这不仅将创建 C:\delicious 文件夹,也会在 C:\delicious 下创建 walnut 文件夹, 并在 C:\delicious\walnut 中创建 waffles 文件夹。也就是说,os.makedirs()将创建所有 必要的中间文件夹,目的是确保完整路径名存在。如图:

    然后我们来了解一下 os.path模块

    os.path 模块包含了许多与文件名和文件路径相关的有用函数。例如,你已经使 用了 os.path.join()来构建所有操作系统上都有效的路径。因为 os.path 是 os 模块中的模块,所以只要执行 import os 就可以导入它。

    处理绝对路径和相对路径

    os.path 模块提供了一些函数,返回一个相对路径的绝对路径,以及检查给定的 路径是否为绝对路径。

    调用 os.path.abspath(path)将返回参数的绝对路径的字符串。这是将相对路径转 换为绝对路径的简便方法。

    调用 os.path.isabs(path),如果参数是一个绝对路径,就返回 True,如果参数是 一个相对路径,就返回 False。

    调用 os.path.relpath(path, start)将返回从 start 路径到 path 的相对路径的字符串。 如果没有提供 start,就使用当前工作目录作为开始路径。

    >>> os.path.abspath('.')

    'C:\\Python34'

    >>> os.path.abspath('.\\Scripts')

    'C:\\Python34\\Scripts'

    >>> os.path.isabs('.')

    False

    >>> os.path.i

    因为在 os.path.abspath()调用时,当前目录是 C:\Python34,所以“点”文件夹指 的是绝对路径'C:\\Python34'。

    但如果需要两个值,os.path.split()是很好的快捷方式。

    同时也请注意,os.path.split()不会接受一个文件路径并返回每个文件夹的字符串的 列表。如果需要这样,请使用 split()字符串方法,并根据 os.path.sep 中的字符串进行分 割。回忆一下,根据程序运行的计算机,os.path.sep 变量设置为正确的文件夹分割斜杠。

    例如:>>> calcFilePath.split(os.path.sep)

    ['C:', 'Windows', 'System32', 'calc.exe']

    在OS X和Linux系统上,返回的列表头上有一个空字符串。

    >>> '/usr/bin'.split(os.path.sep)

    ['', 'usr', 'bin']

    split()字符串方法将返回一个列表,包含该路径的所有部分。如果向它传递 os.path.sep,就能在所有操作系统上工作。

    注意:因为在你的系统上,文件和文件夹可能与我的不同,所以你不能完全遵照我的文章中的每一个例子。但还是请尝试用你的计算机上存在的文件夹来完成例子。

    展开全文
  • python 读写 文件

    2016-09-12 09:48:56
    在E盘下创建python文件夹,创建somefile.txt 文件, 使用 f = open(r'E:\python\somefile.txt','w')不加‘w’ 只是打开,加'w',可以写入文件 r 读模式 w 写模式 a 追加模式 b 二进制模式 +读/写模式(柯添加都...
  • Python进阶(二十五)-Python读写文件

    万次阅读 2017-04-06 14:22:20
    Python进阶(二十五)-Python读写文件打开文件  使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。file_object = open('thefile.txt') try: all_the_text ...
  • Python读写文件项目1、r 打开只读文件,该文件必须存在。2、r+ 打开可读写的文件,该文件必须存在。3、w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。4、w+ 打开可...
  • 博主平时用Python比较多,最近因为工作需要使用Java编程,比较之下,发现Python读写文件真是太方便了!Java读写文件非常繁琐,简直让人抓狂!Python读写文件的语句读文件with open('readFile', 'r') as inFile:for ...
  • 今天小编就为大家分享一篇python 读写文件,按行修改文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 一、python文件读写小结:读写文件是最常见的IO操作,python内置了读写文件的函数,用法和c是兼容的.读写文件前,我们必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作...
  • Python读写文件 Python、JavaEE、Android三剑客。从事...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,171
精华内容 8,468
关键字:

python读写文件

python 订阅