python 3.6中使用open函数遇见的问题
打开文件:
标准函数是:
open(filename,mode=’r’,buffering=-1,encoding=None, errors=None, newline=None, closefd=True, opener=None)
其中 filename是文件的路径名,mode默认为r
例子:
f=open("C:\Users\C\Desktop\project\package1\__init__.py",'r')
输出:
原因是python表述不同于Windows,C:\\,双斜杠是对的。即:
也可以:
f=open("c://Users/C/Desktop/project/package1/__init__.py")
还有一个问题是可能路径的格式没法识别,例如:
f=open("C:\\USers\butterfly\Desktop\aaa.py")
输出是:
OSError: [Errno 22] Invalid argument:'C:\\Users\x08utterfly\Desktop\x07aa.py'
这种情况需要改变路径了,因为路径中带特殊字符。我改成
f=open("E://Program Files/360/test.py")
print(f)
输出:
<_io.TextIOWrapper name='E://Program Files/360/test.py' mode='r' encoding='cp936'>
说明正常
通过f.readlines()得到各行数据
f.readlines():
出现问题:
1)、首先在打开文本的时候,设置其编码格式,如:open(‘1.txt’,encoding=’gbk’);
(2)、若(1)不能解决,可能是文本中出现的一些特殊符号超出了gbk的编码范围,可以选择编码范围更广的‘gb18030’,如:open(‘1.txt’,encoding=’gb18030’);
(3)、若(2)仍不能解决,说明文中出现了连‘gb18030’也无法编码的字符,可以使用‘ignore’属性进行忽略,如:open(‘1.txt’,encoding=’gb18030’,errors=‘ignore’);
(4)、还有一种常见解决方法为open(‘1.txt’).read().decode(‘gb18030’,’ignore’)
根据
我用两个电脑分别实现,一个成功,另一个未成功,然后将未成功的idle关闭,重新打开
成功了,很郁闷。
open(filename,mode='w+'):
当如此打开文件,且文件不存在,则会自动创建这个文件,为空
实时出错,find 和x0cind
换个名字:
:
read()和write()函数:
如果open()函数选择的是mode='r',那么只可以读,而不可以写。如果选择'w'模式,只能写不能读(接到上面):
读或者写结束后,用g.close()关闭文件
发现一个点:最初的时候,看见别人代码里有路径不是很理解,如同最初不能明白加编码方式
#!\C:\Users\C\Desktop\project\package1
# -*- coding:utf-8 -*-
import os
f=open("tx3.py",'w')
os.mkdir('wrap1')
创建的python文件将会在\C:\Users\C\Desktop\project\package1\目录下(目录就是文件夹),最后一个语句创建的目录在package1目录下.最终发现,os.mkdir()函数生成的目录是和前面的创建的文件是同目录。
读写同时运用的实例:
g.tell()#返回文件当前的位置,指针位置
g.readline(size)#读size大小,同时指针后移size位,没有size默认读完本行
g.readlines()#读取所有,指针后移到末尾
g.read(size)#读取给定size,若未给或者为负,则返回所有值
遇见最多的问题还是创建文件返回[Errno22]:
最常用的方法是把单斜杠变成双斜杠。哪里出现问题哪里用双斜杠
参考:
Python文件I/O模块,菜鸟教程:点击打开链接