Crossin的编程教室
标题: 【Python 第32课】 写文件 [打印本页]
作者: crossin先生 时间: 2014-4-24 18:36
标题: 【Python 第32课】 写文件
来而不往,非礼也。有读,就要有写。
和把大象关进冰箱一样,写文件也需要三步:
打开文件;
把内容写入文件;
关闭文件。
打开文件我们昨天已经讲过。但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.从控制台输入一些内容,保存至一个文件。
作者: QQ_172436 时间: 2014-6-13 22:34
op = open('list.py')
li = op.readlines()
f = file('test.py','w')
for i in li:
f.write(i)
作者: xiaohuzai 时间: 2015-3-4 20:16
第一题:- f=file('data.txt')
- data=f.read()
- e=file('output.txt','w')
- e.write(data)
- e.close()
复制代码
作者: xiaohuzai 时间: 2015-3-4 20:19
第二题:- f=raw_input()
- e=file('output.txt','w')
- e.write(f)
- e.close()
复制代码
作者: zzxomg 时间: 2015-3-14 15:42
- #coding:utf-8
- #文件操作
- f = file('data.txt')
- #con = f.read()
- #con = f.readline()
- con = f.readlines()
- for i in con :
- print i,
- f.close()
- f2 = open('data2.txt','w')
- f2.writelines(con)
- f2.close()
复制代码
作者: cross 时间: 2015-4-24 10:08
xiaohuzai 发表于 2015-3-4 20:16
第一题:
f.close()
作者: lovia 时间: 2015-5-28 00:33
- f1=file('data.txt')
- data1=f1.read()
- print data1
- f1.close()
- f2=file('rongqi.txt','w')
- f2.write('20150528\n')
- f2.write(data1)
- data2=f2.read()
- f2.close()
复制代码
作者: 周末晒被子 时间: 2015-12-7 14:39
楼上标有代码行数的是什么软件?太好用了,windows能用吗?
作者: 周末晒被子 时间: 2015-12-7 15:18
本帖最后由 周末晒被子 于 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')。
作者: crossin先生 时间: 2015-12-7 21:41
周末晒被子 发表于 2015-12-7 15:18
Crossin先生,我发现用IDLE,在控制台(非new window的文本编辑器)对 data.txt 进行修改不会真的影响到 da ...
idle的目录不是你当前目录,你用绝对路径
作者: 460883323 时间: 2015-12-9 12:57
#题1
f = file("data.txt")
a1=f.read()
out2=open("output2.txt","w")
out2.write(a1)
out2.close()
#题2
f=raw_input()
out=open("output3.txt","w")
out.write(f)
out.close()
好开心第一次能写出点东西
作者: Kunz 时间: 2015-12-19 14:54
1.
f=open('data.txt')
data=f.read()
print(data)
out=open('output.txt', 'w')
out.write(data)
f.close()
out.close()
作者: Kunz 时间: 2015-12-19 14:59
2.
data=input()
out=open('output.txt','w')
out.write(data)
out.close()
作者: catherinemic 时间: 2016-1-2 17:10
第一题- f=file('data.txt')
- data=f.read()
- out=open('output.txt','a')
- out.write(data)
- f.close
- out.close
复制代码
作者: catherinemic 时间: 2016-1-2 17:20
第二题- data=raw_input()
- eg=file('excercise.txt','w')
- eg.write(data)
- eg.close()
复制代码
作者: 对不起我是保镖 时间: 2016-4-7 17:04
总是提示 IOError: File not open for reading,求解
作者: crossin先生 时间: 2016-4-7 17:32
对不起我是保镖 发表于 2016-4-7 17:04
总是提示 IOError: File not open for reading,求解
w是写入模式
作者: 追风 时间: 2016-5-5 15:39
Crossin老师,新写的文件必须关闭之后,再打开才能print吗?有没有其他快捷的方式呢?
作者: 追风 时间: 2016-5-5 15:49
作者: FPOS 时间: 2016-5-31 11:41
本帖最后由 FPOS 于 2016-5-31 11:51 编辑
- f=file('text1.txt')
- date=f.read()
- print 'copy over'
- f.close()
- print 'closed text1'
- e=file('text2.txt','w')
- e.write(date)
- print 'writed in text2'
- e.close()
- print 'closed text2\n请检查文件'
复制代码 月底终于忙完了,其实还是懒。- f1=raw_input()
- f2=file('text2.txt','w')
- f2.write(f1)
- f2.close()
复制代码
作者: qizhounk 时间: 2016-8-16 02:17
Hi,
请问为什么我的程序报错呢?
谢谢!
-
1.png
(60.07 KB, 下载次数: 398)
作者: qizhounk 时间: 2016-8-16 02:21
qizhounk 发表于 2016-8-16 02:17
Hi,
请问为什么我的程序报错呢?
谢谢!
最后一行的f.close后面加上了(), 也还是一样的报错
作者: crossin先生 时间: 2016-8-16 15:06
qizhounk 发表于 2016-8-16 02:21
最后一行的f.close后面加上了(), 也还是一样的报错
你的路径里有字符被转义了
路径里面用双斜杠\\,或者在前面加上 r,如r"c:\Users\...."
作者: qizhounk 时间: 2016-8-17 08:29
crossin先生 发表于 2016-8-16 15:06
你的路径里有字符被转义了
路径里面用双斜杠\\,或者在前面加上 r,如r"c:%users\...."
...
哇,真的可以,谢谢啦!
作者: l0ve1o24 时间: 2016-12-10 15:08
f=raw_input()
e=file('output.txt','w')
e.write(f)
e.close()
老师,像第二题在控制台输入内容,如何换行
作者: crossin先生 时间: 2016-12-10 18:56
l0ve1o24 发表于 2016-12-10 15:08
f=raw_input()
e=file('output.txt','w')
e.write(f)
如果是input,可以用三引号的方式
如果是 raw_input ,用 \r\n 表示换行
作者: blueheart 时间: 2017-8-25 07:53
第一题:- f = file('data.txt')
- data = f.read()
- print data
- f.close()
- #f1 = file('target.txt') python默认是以只读模式打开文件。如果想要写入内容,在打开文件的时候需要指定打开模式为写入
- f1 = file('target.txt','w')
- f1.write(data)
- #data1 = f1.read()
- #print data1
- f1.close()
- #print f1.read()
- f2 = file('target.txt')
- data1 = f2.read()
- print data1
复制代码 第二题:- s = raw_input()
- f = file('output.txt','w')
- f.write(s)
- f.close()
- f1 = file('output.txt')
- data = f1.read()
- print data
复制代码
作者: Matthewguo 时间: 2017-9-28 03:04
第一题,感觉有思路,但是自己写的也能出来结果。
思路,打开已有文档读取内容,创建新文档并将已有的文档内容写入新文档,读取新文档。
f=open('test1.txt') #已经存在的test1文档
data1=f.read() #把test1中的内容赋值给data1
f.close() #关闭test1
text=data1 #将data1(文档内容)赋值给新变量text
newtxt=open('new.txt','w') #写入一个新文档,名称为new
data2=newtxt.write(data1) #data2为新文档new的内容(空白),将text内容写入data2
newtxt.close() #关闭
read1=open('new.txt') #读取刚写入的文档new
out=read1.read() #将new内容赋值给out
print(out) #输入out内容
read1.close() #关闭
ps.crossin老师,有没有比较好的命名规范吗?!比如变量什么的。
因为每次自己赋值,其实比较容易乱
作者: Matthewguo 时间: 2017-9-28 03:13
第二题。
f=input()
open1=open('second.txt','w')
input=open1.write(f)
open1.close()
open2=open('second.txt') #这部分可以省略,只为检查写入内容
data=open2.read()
print(data)
open2.close()
作者: crossin先生 时间: 2017-9-28 12:05
Matthewguo 发表于 2017-9-28 03:04
第一题,感觉有思路,但是自己写的也能出来结果。
思路,打开已有文档读取内容,创建新文档并将已有的文档 ...
命名没啥特别的。保证基本的命名规范,然后尽量用能够理解的英文单词最好,两个单词的话中间用下划线。
一般变量用名词,函数用动词。
主要目的是可读性,这个可以参考一些国外教材里的例子,它们做得比较好
作者: starleilei 时间: 2018-3-24 10:27
crossin先生 发表于 2016-12-10 18:56
如果是input,可以用三引号的方式
如果是 raw_input ,用 \r\n 表示换行
先生,这个具体是怎么输入的,可以举个例子吗,我py2试了好久,都没成功
作者: crossin先生 时间: 2018-3-24 14:36
starleilei 发表于 2018-3-24 10:27
先生,这个具体是怎么输入的,可以举个例子吗,我py2试了好久,都没成功 ...
a = 'hello \r\n world'
f.write(a)
作者: starleilei 时间: 2018-3-25 08:01
crossin先生 发表于 2018-3-24 14:36
a = 'hello \r\n world'
f.write(a)
先生,这个我试了用input是可以输入换行的,但是raw_input呢怎么做呢,还是没有研究出来,求解惑
作者: crossin先生 时间: 2018-3-25 22:48
starleilei 发表于 2018-3-25 08:01
先生,这个我试了用input是可以输入换行的,但是raw_input呢怎么做呢,还是没有研究出来,求解惑 ...
为什么一定要用 raw_input 输入多行呢……
非要用的话,你用 eval(raw_input()) ,效果和 input 一样
作者: starleilei 时间: 2018-3-26 07:11
crossin先生 发表于 2018-3-25 22:48
为什么一定要用 raw_input 输入多行呢……
非要用的话,你用 eval(raw_input()) ,效果和 input 一样 ...
谢谢先生解惑
作者: 司南 时间: 2018-4-9 18:52
- #homework.No.1
- #司南 2018.04.09
- #从文件中读取内容
- f_read=open('while.py').read()
- f_save=open('save.py','w')
- f_save.write(f_read)
- f_save.close()
- data=open('save.py').read()
- print(data)
复制代码
作者: 司南 时间: 2018-4-9 19:06
Crossin先生,我实在是不知道怎么办了,为啥这个代码一执行到,输入done,python就死机呢- #homework.No.1
- #司南 2018.04.09
- #从控制台输入内容,保存至文件
- string=input('You can add any words to the document,Please begin,and end with "done"')
- while string!='done':
- f_desk=open('desk.txt','a+')
- f_desk.write(string+'\n')
- f_desk.close()
- string=input('You can add any words to the document,Please begin,and end with "done"')
- data=open('desk.txt').read()
- print(data)
- data.close()
复制代码
作者: crossin先生 时间: 2018-4-9 23:16
司南 发表于 2018-4-9 19:06
Crossin先生,我实在是不知道怎么办了,为啥这个代码一执行到,输入done,python就死机呢 ...
因为死循环了啊
程序里多增加一些print输出你就看出来了
作者: 司南 时间: 2018-4-10 15:12
crossin先生 发表于 2018-4-9 23:16
因为死循环了啊
程序里多增加一些print输出你就看出来了
- #homework.No.2
- #司南 2018.04.09
- #从控制台输入内容,保存至文件
- string=input('You can add any words to the document,Please begin,and end with "done"')
- while string!="done":
- print(string)
- f_desk=open('desk.txt','a+')
- f_desk.write(string+'\n')
- f_desk.close()
- string=input('You can add any words to the document,Please begin,or end with "done"')
- print(string)
- f=open('desk.txt')
- data1=f.read()
- print(data1)
- f.close()
复制代码 Crossin先生,这个加了print试了一下,每次print也是对的,但是一点输入done,python就是转圈圈,未响应,您知道为啥麽
作者: crossin先生 时间: 2018-4-10 15:52
司南 发表于 2018-4-10 15:12
Crossin先生,这个加了print试了一下,每次print也是对的,但是一点输入done,python就是转圈圈,未响应 ...
我这边执行你的代码没有问题
换个文件或者换个代码执行环境试试吧
作者: 司南 时间: 2018-4-10 15:54
crossin先生 发表于 2018-4-10 15:52
我这边执行你的代码没有问题
换个文件或者换个代码执行环境试试吧
多谢先生,已解决,更换文件名字就可以了
作者: startforever 时间: 2018-5-31 21:20
#第一题
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()
欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) |
Powered by Discuz! X2.5 |