鱼C论坛

 找回密码
 立即注册
查看: 1716|回复: 3

[已解决]求助大佬,为什么方法一打印不了文件内容而方法二可以

[复制链接]
发表于 2020-10-22 22:32:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

方法一:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
from sys import argv
from os.path import exists

script, from_file, to_file = argv

print(f"Copying from {from_file} to {to_file}")  # 打印 Copying from 变量1 to 变量2

# we could do these two on line, how?
in_file = open(from_file)  # 打开 文件名为 变量1 的文件并赋值给 in_file
indata = in_file.read()    # 读取in_file 文件中的内容

print(f"The input file is {len(indata)} bytes long")  # len() 函数:以数值的形式返回你传递的字符串

print(f"Does the output file exist? {exists(to_file)}") # exists() 函数:将文件名字符串作为参数,如果这个文件存在将返回 True,否则返回 False
print("Ready, hit RETURN to continue, CTRL-C to abort.")
input()

out_file = open(to_file, 'w')  # 打开文件名为 变量2 的文件只用于写入——'w'
out_file.write(indata)         # 把in_file 文件中的内容写入 变量2 文件中

print(out_file.read())  # 打印名为 变量2 的文件中的内容,注意文件状态是否为可读写

print("Alright, all done.")


out_file.close()  # 关闭名为 变量1 的文件
in_file.close()   # 关闭名为 变量2 的文件


------------------------------------------------------------------------------------------------------------------------------
方法二:

------------------------------------------------------------------------------------------------------------------------------

from sys import argv
from os.path import exists

script, from_file, to_file = argv

print(f"Copying from {from_file} to {to_file}")  # 打印 Copying from 变量1 to 变量2

# we could do these two on line, how?
in_file = open(from_file)  # 打开 文件名为 变量1 的文件并赋值给 in_file
indata = in_file.read()    # 读取in_file 文件中的内容

print(f"The input file is {len(indata)} bytes long")  # len() 函数:以数值的形式返回你传递的字符串

print(f"Does the output file exist? {exists(to_file)}") # exists() 函数:将文件名字符串作为参数,如果这个文件存在将返回 True,否则返回 False
print("Ready, hit RETURN to continue, CTRL-C to abort.")
input()

out_file = open(to_file, 'w')  # 打开文件名为 变量2 的文件只用于写入——'w'
out_file.write(indata)         # 把in_file 文件中的内容写入 变量2 文件中

print("Alright, all done.")


out_file.close()  # 关闭名为 变量1 的文件
in_file.close()   # 关闭名为 变量2 的文件

New_txt = open(to_file)
print(New_txt.read())
最佳答案
2020-10-23 09:58:29
本帖最后由 suchocolate 于 2020-10-23 10:06 编辑

方法1:
首先w方式是只写,f.read()读取会报错: io.UnsupportedOperation: not readable
如果换成w+读写模式,写入内容后,指针会跟随写入位置移动,由于out_file是新文件,写完后指针后面没有内容,f.read()只能读取指针之后的内容。

方法2:
想不关闭文件读取到之前的内容,那么就的f.seek(0,0)将指针挪到开头。
当然还有一种方式就是你的方法2,关闭文件再打开,指针默认从文件头读取,所以能打印。

file章节建议仔细看看:https://www.runoob.com/python3/python3-file-methods.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-23 09:58:29 | 显示全部楼层    本楼为最佳答案   
本帖最后由 suchocolate 于 2020-10-23 10:06 编辑

方法1:
首先w方式是只写,f.read()读取会报错: io.UnsupportedOperation: not readable
如果换成w+读写模式,写入内容后,指针会跟随写入位置移动,由于out_file是新文件,写完后指针后面没有内容,f.read()只能读取指针之后的内容。

方法2:
想不关闭文件读取到之前的内容,那么就的f.seek(0,0)将指针挪到开头。
当然还有一种方式就是你的方法2,关闭文件再打开,指针默认从文件头读取,所以能打印。

file章节建议仔细看看:https://www.runoob.com/python3/python3-file-methods.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-23 10:02:19 | 显示全部楼层
方法一:由于out_file是刚写完。文件指针指向的是文件末尾,所以读不出来
方法二:New_txt是刚打开文件,文件指针在文件头。所以可以读出来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-23 20:10:49 | 显示全部楼层
suchocolate 发表于 2020-10-23 09:58
方法1:
首先w方式是只写,f.read()读取会报错: io.UnsupportedOperation: not readable
如果换成w+读写 ...

感谢答疑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 07:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表