Python_day08--文件的操作--open

一、文件的读写

读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。

读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

1、读文件

f = open("/tmp/passwd")    #注意我们这里尽量不要用系统的原文件进行操作,可以复制到/tmp目录下,这是一个临时存放目录;
print(f)

我们看的的结果如下:

难道是我们没有复制成功吗;我们打开/tmp/passwd看看

那么请你再看看下面的打开方式;

f = open("/tmp/passwd")
print(f.read())

当我们对这个文件产生read动作时,则可以读取到文件内容;我们代对这个文件进行操作时会有很多选项:

这里需要强调的是当我们在pycharm中打开文件进行操作时,系统会把文件内容把开并保存在内存中,所以一般我们打开文件后都要有关闭的动作;把文件内容从内存中释放掉,以便节约空间;

f.close()

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

2、对文件进行操作

read()会一次性读取文件的全部内容,如果文件有 10G,内存就爆了;那么我们应该怎么办?

我们用下面的一条公式来解决我们文件操作:

 print("after-文件打开状态:",f.closed)
r 以读的方式打开,定位到文件开头 , 默认的 mode
r+ 以读写的方式打开,定位文件开头 , 可以写入内容到文件
w 以写的方式打开,打开文件的时候会清空文件的内容,并且不能读
w+ 以读写的方式打开,定位到文件头,并且打开文件的时候也会清空文件的内容
a 以写的方式打开,定位到文件的末尾,是一个追加的操作 , 但并不允许读
a+ 以读写的方式打开,定位到文件的末尾,追加的方式,若文件不存在则会创建这个文件。


(1)r

1. 文件不存在, 则报错;

2. 'r'模式打开文件, 不会清空文件的所有内容

3. read?(yes)   write?(no)

不可写;

可读;


(2)r+

1.文件不存在, 则报错;

2.'r+'模式打开文件, 不会清空文件的所有内容

3.read?(yes)   write?(yes)


(3) w:

1. 文件不存在, 则创建文件;

2. 'w'模式打开文件, 先清空文件的所有内容

3. read?(no)   write?(yes)

(4)w+:

1.文件不存在, 则创建文件;

2.'w+'模式打开文件, 先清空文件的所有内容

3.read?(no)   write?(yes)

'w+'模式打开文件, 先清空文件的所有内容


(5)a:

1.文件不存在, 则创建文件;

2.定位到文件的末尾,是一个追加的操作

3.read(no);write(yes)



(6)a+

1. file not exist, create(若文件不存在则会创建这个文件);

2. write(yes), read(yes)

3. 追加写入的内容到最后;

二、对文件读取的集中操作

1、查看文件内容的一行

f = open("/tmp/passwd")
print(f.readline(),end=' ')
f.close()

2、查看文件的所有内容

f = open("/tmp/passwd")
file = f.readlines()
for i in file:
    print(i,end=' ')
f.close()

 

3、查看文件的路径

f = open("/tmp/passwd")
print(f.name)

f.close()

4、查看文件的关闭状态

print(f.closed)

5、查看字符编码

f = open("/tmp/passwd")
print(f.encoding)

f.close()

6、seek方法,

移动指针 seek第一个参数是偏移量: >0, 代表向右移动, <0,代表向左移动 ,=0,代表不动;

seek第2个参数是: 0:移动指针到文件开头 1: 不移动指针; 2:移动指针到文件末尾

f = open("/tmp/passwd")
print(f.seek(0,2))

f.close()

7、f.tell()函数,返回当前文件指针的偏移量

f = open("/tmp/passwd")
print(f.tell())

8、f.flush()函数,将缓冲区的内容写入到硬盘中

9、f.fileno() 函数,返回当前的文件描述符,一个数字

10、f.isatty() 函数,当前打开的文件是否是一个终端设备

三、对文件快速清空

'w'模式打开文件, 先清空文件的所有内

f = open("/tmp/passwd", 'w')
f.close()

四、文件的写操作

1、给文件内写入操作

f = open("/tmp/passwd",'a+')
# 文件写入时,也会移动指针,
f.write("hello")

f.close()

2、写入一行内容

f = open("/tmp/passwd",'a+')
# 文件写入时,也会移动指针,
f.writelines(['\ngcc\n', 'c++\n'])

f.close()

3、将列表内容加入到文将当中

f = open("/tmp/passwd",'w')
li = ['user1', 'user2', 'user3']
# 文件写入时,也会移动指针,
f.writelines([line+"\n" for line in  li])
f.close()












C# Open xml Word文件操作

08-19

最近接触了office开发和openxml sdk2.0的相关知识,遇到了一些问题,有些问题通过查帮助已经解决,不过还有几个难题困扰着我,请您在百忙之中找时间帮我解答一下:rn1、Word Processing Document拆分的问题:我想根据Document中的一些标签或是分割符(有可能是自己定义的),把文档的内容分别取出,存到别的word文档中或是数据库的字段中,这个过程不能够失真,就是里面包含的样式和资源文件要完整的放到新的文件中;这个部分找到的资料有这个http://powertools.codeplex.com/,由于资料不是很详细所以没有完成想完成的功能,能否帮我做个简单的示例程序或是提供些资料。rn2、Assemble Multiple Word Processing Documents into One,文档合并的问题。这个我做出来了,里面的实现的原理我是这样的理解的:首先,建立一个模板文档(后来发现新建一个文档就成),然后在文档中建立标记AltChunk ,最后打开一个要合并的文档,把这个文档以AltChunk 的形式插入。这个方法是在Open XML SDK 2.0 for Microsoft Office 帮助文档中找到的,这个方法我可以用,,不过也存在问题,就是解压生成的docx文档发现,这种方法是把合并的文档以资源的形式添加到docx文档中的,,然后添加关系信息。这种方式应该是合并最简单的方式了,不过当我想用程序拆分时,就是问题1,方法不能通用。。rn3、Word文档显示文题:目前有没有比较小巧的控件用来显示word文档中的内容,在客户不安装Word编辑器的时候也能正常显示,这个控件不需要编辑功能类似文本框控件这样的就成。我目前的做法是用一个中间件dsoframer.ocx,将Word中的功能加载到页面中了,这种方式给用户的感觉不够专业,想看看有没有更合适的类似的控件。rn问题不少,在我们的圈子中,这样的问题都是难题了,,问了很多人他们都觉没有什么太好的办法,只好麻烦您了。rn目前做的是一个试题库管理系统的项目,通过需求的调研发现客户是用word文档的形式处理试卷的。我们的软件的流程大概是这样的:首先将用户的word电子档的试卷导入导入到系统中,这个过程就是试卷的拆分和导入的过程,这样每个题逮到数据库中,做为试题库,后期用户可以修改试题,编撰答案解析等等;有了这样的试题库用户就可以生成试卷,生成试卷的方式就是根据用户设置的条件比如课目、题型、分值等等导出一个Word的试卷,供考试自测等使用。rn4、目前我看到一些项目都是以part对包分析,能不能对包内的Document.xml中的段落及更细的分析。我试图找一些关于docx中每个部件的具体信息,还有每个部件有哪些标签,每个标签都是什么含义,结果在网上没有找到相关文档,只能用包查看的工具查看和分析;我找一个开源的项目Openxml power tools,不过不熟悉Open xml格式,看这个代码还是感觉很困难;rnrn如果有想这样做可以和我联系,我们共同研究,,我的QQ:47307116

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试