请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 16487|回复: 10

【python 32课】写文件 课后作业的问题

[复制链接]

3

主题

0

好友

47

积分

新手上路

Rank: 1

发表于 2017-2-1 08:23:21 |显示全部楼层
本帖最后由 felixfunky 于 2017-2-1 08:32 编辑

我有一个data.txt 内容为:
hahaha!
im in a file!
so cool!

还有一个output.txt 内容为空

现在想把data.txt 读取一遍+读取第一行,存入output.txt:储存结果为

hahaha!
im in a file!
so cool!
hahaha!

我写的以下代码:
f=file('data.txt')
read=f.read()
readline=f.readline()

i=file('output.txt','a')
i.write(read)
i.write(readline)

j=file('output.txt')
k=j.read()
print k

f.close()
j.close()


请问一下代码错误在哪里?
每次输出都不是想要的结果,而且每次输出结果有时还不一样,有时改变代码再运行的时候,输出还会滞后一部,运行前一次的代码。
顺便求一下32课课后作业的正确答案.........

感谢crossin先生。


回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-2-1 11:23:01 |显示全部楼层
你这个代码太乱,不好评价。看得出你对文件读写还不是很了解,建议再找相关资料多看看

readline不会包含read的第一行,所以你要输出,得写入两遍read。
(用 read readline 这种名称命名变量本身也不好)
最后那段read毫无意义。不应该在一个文件还没有关闭前,就再次打开它,对其进行读写。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

8

积分

新手上路

Rank: 1

发表于 2017-2-1 20:26:05 |显示全部楼层
我写的很简单:

f = file('data.txt')   # 打开data.txt文件
read = f.read()
print '读取的数据为:' + read    # 检查是否读取出来
read = f.close()
l = file('output.txt', 'w')    # 建立output.txt文件,用以存储写入的数据
d = l.write(read)
print d
l.close()

我也是下午刚写的,我运行没有错误,这段在网吧打的,你试试。。

第二题是:
print '请输入数据:'
context = raw_input()    # 用这个输入函数就是图个方便,但容易出错
f = file('output.txt', 'w')
f.write(context)
f.close()


回复

使用道具 举报

0

主题

0

好友

8

积分

新手上路

Rank: 1

发表于 2017-2-1 20:28:58 |显示全部楼层
这个论坛是老师你自己建的吗?这是用php写的吗?访问速度好快啊。真希望有一天我能写一个自己的博客。我自己设计界面,写一些只给我看的文章记录。。。
回复

使用道具 举报

3

主题

0

好友

47

积分

新手上路

Rank: 1

发表于 2017-2-2 05:59:11 |显示全部楼层
hpuhuang 发表于 2017-2-1 20:26
我写的很简单:

f = file('data.txt')   # 打开data.txt文件

主要是 我的程序里 想用read  data.txt的文件存入output里 以及多用readline存data.txt里的第一行。但是不知道错误在哪里。看来并不能直接
f.read
f.readline
放在一起用
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-2-2 10:39:28 |显示全部楼层
felixfunky 发表于 2017-2-2 05:59
主要是 我的程序里 想用read  data.txt的文件存入output里 以及多用readline存data.txt里的第一行。但是 ...

你了解一下读写文件时候,有个读写位置的概念,以及 seek() 函数的作用。

并不是你read一下,再readline一下,就如你想的那样。你可以自己在控制台测试下你这样read出来是什么值。

如果只是要完成你要的效果,你可以把每一行都读出来保存在变量里,然后自己再处理成你要的结果,最后再保存。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-2-2 10:40:31 |显示全部楼层
hpuhuang 发表于 2017-2-1 20:28
这个论坛是老师你自己建的吗?这是用php写的吗?访问速度好快啊。真希望有一天我能写一个自己的博客。我自 ...

论坛是用的 discuz 工具。类似的还有 wordpress、hexo。你看建站区里面有一些介绍文章的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

3

主题

0

好友

47

积分

新手上路

Rank: 1

发表于 2017-2-2 11:23:28 |显示全部楼层
crossin先生 发表于 2017-2-2 10:40
论坛是用的 discuz 工具。类似的还有 wordpress、hexo。你看建站区里面有一些介绍文章的 ...

好的,多谢老师!
回复

使用道具 举报

0

主题

0

好友

22

积分

新手上路

Rank: 1

发表于 2017-10-31 20:46:09 |显示全部楼层
f=file('test.txt')
data=f.readline()
data1=f.read()
print data
print data1
f.close()

验证有读写位置这一说法
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-11-1 16:40:11 |显示全部楼层
西门子不吹雪 发表于 2017-10-31 20:46
f=file('test.txt')
data=f.readline()
data1=f.read()

f.seek(0) 回到开头
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-4-16 16:45 , Processed in 0.041487 second(s), 26 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部