练习17--更多文件

一 相关知识

1 exists命令:

功能:基于一个字符串里面的变量文件名来判断文件是否存在,如果存在,返回 True ;不存在,返回 False 。

注意:在脚本中使用该命令需要导入:from os.path import exists

2 cat命令

功能:用于连接文件并打印到标准输出设备上。

语法:cat  文件名

学习:可以使用man cat命令来看看关于这个命令的作用。

3 len函数

len()函数是什么作用? 它能够取字符串的长度,然后返回一个数字
 
4 在我试着把这些代码缩短的时候,我在关闭文件文件时遇到了错误。。 你可能用了indata = open(from_file).read() ,这意味着你不需要在之后再输入 in_file.close() ,因为
你已经到了脚本的最后。一旦那一行运行过之后,它就已经被 Python 关掉了。
 
5 我收到了一个这样的的错误:: Syntax:EOL while scanning string literal 。。 你忘了在字符串后面加引号了,再检查一遍的代码。
 
二 代码及运行结果
1 程序代码
from sys import argv
from os.path import exists

script,from_file,to_file = argv

# 打印该脚本的功能:复制文件
print(f"Copy from {from_file} to {to_file}")

# 打开要复制的源文件并读取文件中的数据
# we could do these two on one line,how?
in_file = open(from_file)
indata = in_file.read()

# 打印源文件中数据的大小
print(f"The input file is {len(indata)} bytes long")

# 判断复制后得到的目标文件是否存在
# 实际中结果是不存在,所以说我们在用argv传递一个to_file文件的时候,
# 是不是只是相当于定义了一个名字,而这个名字还没有被赋值
# 在执行完打开文件操作之后该文件才存在,可以判断一下:31行:print(exists(to_file))
print(f"Does the output file exists?{exists(to_file)}")

# 判断是否要继续复制文件
print("Ready,hit RETURN to continue,CTRL-C to abort.")
input()

# 以可写模式打开to_file文件并将源文件中的数据写入
out_file = open(to_file,'w')
out_file.write(indata)

print(exists(to_file))

print("Alright,all done.")

# 关闭文件
out_file.close()
in_file.close()

2 执行结果

PS E:\3_work\4_python\2_code_python\02_LearnPythonTheHardWay> python ex17.py test.txt  new_file.txt
Copy from test.txt to new_file.txt
The input file is 11 bytes long
Does the output file exists?False
Ready,hit RETURN to continue,CTRL-C to abort.
RETURN
True
Alright,all done.

 

posted @ 2020-07-03 01:13  洛兰123  阅读(122)  评论(0编辑  收藏  举报