设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 39939|回复: 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
回复

使用道具 举报

0

主题

0

好友

26

积分

新手上路

Rank: 1

41#
发表于 2018-5-31 21:20:44 |只看该作者
#第一题
f1=open(r'e:\test\11.txt','r',encoding='UTF-8')
f2=open(r'e:\test\22.txt','w',encoding='UTF-8')
f2.write(f1.read())
f1.close()
f2.close()

#第二题
a=input()
f3=open(r'e:\test\33.txt','a',encoding='UTF-8')
f3.write(a)
f3.close()
回复

使用道具 举报

0

主题

2

好友

72

积分

注册会员

Rank: 2

40#
发表于 2018-4-10 15:54:44 |只看该作者
crossin先生 发表于 2018-4-10 15:52
我这边执行你的代码没有问题

换个文件或者换个代码执行环境试试吧

多谢先生,已解决,更换文件名字就可以了
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

39#
发表于 2018-4-10 15:52:26 |只看该作者
司南 发表于 2018-4-10 15:12
Crossin先生,这个加了print试了一下,每次print也是对的,但是一点输入done,python就是转圈圈,未响应 ...

我这边执行你的代码没有问题

换个文件或者换个代码执行环境试试吧
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

2

好友

72

积分

注册会员

Rank: 2

38#
发表于 2018-4-10 15:12:36 |只看该作者
crossin先生 发表于 2018-4-9 23:16
因为死循环了啊
程序里多增加一些print输出你就看出来了
  1. #homework.No.2
  2. #司南 2018.04.09
  3. #从控制台输入内容,保存至文件
  4. string=input('You can add any words to the document,Please begin,and end with "done"')
  5. while string!="done":
  6.     print(string)
  7.     f_desk=open('desk.txt','a+')
  8.     f_desk.write(string+'\n')
  9.     f_desk.close()
  10.     string=input('You can add any words to the document,Please begin,or end with "done"')
  11.     print(string)
  12. f=open('desk.txt')
  13. data1=f.read()
  14. print(data1)
  15. f.close()
复制代码
Crossin先生,这个加了print试了一下,每次print也是对的,但是一点输入done,python就是转圈圈,未响应,您知道为啥麽
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

37#
发表于 2018-4-9 23:16:59 |只看该作者
司南 发表于 2018-4-9 19:06
Crossin先生,我实在是不知道怎么办了,为啥这个代码一执行到,输入done,python就死机呢 ...

因为死循环了啊
程序里多增加一些print输出你就看出来了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

2

好友

72

积分

注册会员

Rank: 2

36#
发表于 2018-4-9 19:06:19 |只看该作者
Crossin先生,我实在是不知道怎么办了,为啥这个代码一执行到,输入done,python就死机呢
  1. #homework.No.1
  2. #司南 2018.04.09
  3. #从控制台输入内容,保存至文件
  4. string=input('You can add any words to the document,Please begin,and end with "done"')
  5. while string!='done':
  6.     f_desk=open('desk.txt','a+')
  7.     f_desk.write(string+'\n')
  8.     f_desk.close()
  9.     string=input('You can add any words to the document,Please begin,and end with "done"')
  10. data=open('desk.txt').read()
  11. print(data)
  12. data.close()
复制代码
回复

使用道具 举报

0

主题

2

好友

72

积分

注册会员

Rank: 2

35#
发表于 2018-4-9 18:52:23 |只看该作者
  1. #homework.No.1
  2. #司南 2018.04.09
  3. #从文件中读取内容
  4. f_read=open('while.py').read()
  5. f_save=open('save.py','w')
  6. f_save.write(f_read)
  7. f_save.close()
  8. data=open('save.py').read()
  9. print(data)
复制代码
回复

使用道具 举报

0

主题

0

好友

30

积分

新手上路

Rank: 1

34#
发表于 2018-3-26 07:11:20 |只看该作者
crossin先生 发表于 2018-3-25 22:48
为什么一定要用 raw_input 输入多行呢……
非要用的话,你用 eval(raw_input()) ,效果和 input 一样 ...

谢谢先生解惑
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

33#
发表于 2018-3-25 22:48:00 |只看该作者
starleilei 发表于 2018-3-25 08:01
先生,这个我试了用input是可以输入换行的,但是raw_input呢怎么做呢,还是没有研究出来,求解惑 ...

为什么一定要用 raw_input 输入多行呢……
非要用的话,你用 eval(raw_input()) ,效果和 input 一样
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

30

积分

新手上路

Rank: 1

32#
发表于 2018-3-25 08:01:18 |只看该作者
crossin先生 发表于 2018-3-24 14:36
a = 'hello \r\n world'
f.write(a)

先生,这个我试了用input是可以输入换行的,但是raw_input呢怎么做呢,还是没有研究出来,求解惑
回复

使用道具 举报

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

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

GMT+8, 2024-5-8 15:40 , Processed in 0.030140 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部