设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 50831|回复: 41
打印 上一主题 下一主题

【Python 第32课】 写文件

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2014-4-24 18:36:38 |只看该作者 |倒序浏览
来而不往,非礼也。有读,就要有写。

和把大象关进冰箱一样,写文件也需要三步:
打开文件;
把内容写入文件;
关闭文件。

打开文件我们昨天已经讲过。但python默认是以只读模式打开文件。如果想要写入内容,在打开文件的时候需要指定打开模式为写入:

f = file('output.txt', 'w')

'w'就是writing,以这种模式打开文件,原来文件中的内容会被你新写入的内容覆盖掉,如果文件不存在,会自动创建文件。
不加参数时,file为你默认为'r',reading,只读模式,文件必须存在,否则引发异常。
另外还有一种模式是'a',appending。它也是一种写入模式,但你写入的内容不会覆盖之前的内容,而是添加到文件中。

打开文件还有一种方法,就是open(),用法和file()是一致的。

写入内容的方法同样简单:

f.write('a string you want to write')

write的参数可以是一个字符串,或者一个字符串变量。

示例程序:

data = 'I will be in a file.\nSo cool!'
out = open('output.txt', 'w')
out.write(data)
out.close()

在你的程序保存目录下,打开output.txt就会看到结果。

留两道课后作业:
1.从一个文件中读出内容,保存至另一个文件。
2.从控制台输入一些内容,保存至一个文件。

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

沙发
匿名  发表于 2014-6-13 22:34:35
op = open('list.py')
li = op.readlines()
f = file('test.py','w')
for i in li:
    f.write(i)
回复

使用道具

0

主题

0

好友

505

积分

高级会员

Rank: 4

板凳
发表于 2015-3-4 20:16:48 |只看该作者
第一题:
  1. f=file('data.txt')
  2. data=f.read()
  3. e=file('output.txt','w')
  4. e.write(data)
  5. e.close()
复制代码
回复

使用道具 举报

0

主题

0

好友

505

积分

高级会员

Rank: 4

地板
发表于 2015-3-4 20:19:36 |只看该作者
第二题:
  1. f=raw_input()
  2. e=file('output.txt','w')
  3. e.write(f)
  4. e.close()
复制代码
回复

使用道具 举报

0

主题

0

好友

36

积分

新手上路

Rank: 1

5#
发表于 2015-3-14 15:42:43 |只看该作者
  1. #coding:utf-8
  2. #文件操作
  3. f = file('data.txt')
  4. #con = f.read()
  5. #con = f.readline()
  6. con = f.readlines()
  7. for i in con :
  8.                 print i,
  9. f.close()
  10. f2 = open('data2.txt','w')
  11. f2.writelines(con)
  12. f2.close()
复制代码
回复

使用道具 举报

0

主题

0

好友

215

积分

中级会员

Rank: 3Rank: 3

6#
发表于 2015-4-24 10:08:33 |只看该作者
xiaohuzai 发表于 2015-3-4 20:16
第一题:

f.close()
回复

使用道具 举报

0

主题

0

好友

54

积分

注册会员

Rank: 2

7#
发表于 2015-5-28 00:33:53 |只看该作者
  1. f1=file('data.txt')
  2. data1=f1.read()
  3. print data1
  4. f1.close()
  5. f2=file('rongqi.txt','w')
  6. f2.write('20150528\n')
  7. f2.write(data1)
  8. data2=f2.read()
  9. f2.close()
复制代码
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

8#
发表于 2015-12-7 14:39:23 |只看该作者
楼上标有代码行数的是什么软件?太好用了,windows能用吗?
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

9#
发表于 2015-12-7 15:18:53 |只看该作者
本帖最后由 周末晒被子 于 2015-12-7 15:23 编辑

Crossin先生,我发现用IDLE,在控制台(非new window的文本编辑器)对 data.txt 进行修改不会真的影响到 data.txt 。

在控制台,我想通过创建一个新的txt文本,“newdata.txt”,并写入一些东西:

>>>f=open('newdata.txt','w')
>>>stuff='12345'
>>>f.write(stuff)
>>>f.close()

这样并不会在文件目录生成一个新的 newdata.txt。

又比如在控制台对一个已经存在的文件 wenjian.txt ,想把一些东西覆盖或者添加上去:

>>>f=open('wenjian.txt','w')
>>>stuff='12345'
>>>f.write(stuff)
>>>f.close()

我再回去打开 wenjian.txt 完全没有变化。进行appending操作也是一样,f=open('wenjian.txt','a')。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

10#
发表于 2015-12-7 21:41:28 |只看该作者
周末晒被子 发表于 2015-12-7 15:18
Crossin先生,我发现用IDLE,在控制台(非new window的文本编辑器)对 data.txt 进行修改不会真的影响到 da ...

idle的目录不是你当前目录,你用绝对路径
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-12-4 01:29 , Processed in 0.027047 second(s), 30 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部