一、编写一个程序,可以将指定文件中的字符串修改,比如将文件中所有的"java"修改为"python".
①首先我们创建test_package包这个文件,并在文件下创建demo1.py的python文件,在里面定义一个函数如下:
def a_file(file_path,old_string,new_string):try:with open(file_path,'r',encoding='utf-8') as file:file_content = file.read()modified_content = file_content.replace(old_string,new_string)with open(file_path,'w',encoding='utf-8') as file:file.write(modified_content)print(f'成功将"{old_string}"替换为"{new_string}"。')except FileExistsError:print(f"文件末找到:{file_path}")except Exception as e:print(f"出现错误:{e}")
②创建python文件,并在里面调用如下:
file_path = 'user_pass.txt'
old_string = 'java'
new_string = 'python'
a_file(file_path, old_string, new_string)
代码解释如下:
-
首先,我们定义了一个名为
replace_string_in_file
的函数,该函数接受三个参数:file_path
(文件路径)、old_string
(要替换的旧字符串)和new_string
(要替换成的新字符串)。 -
在函数内部,我们使用
try
和except
语句来捕获可能出现的异常,比如文件找不到或其他错误。 -
我们打开指定路径的文件
file_path
,使用with open(...) as file
语句,这样可以确保在文件操作完成后自动关闭文件,无需手动关闭文件。 -
使用
open
函数的第一个参数传入文件路径file_path
,第二个参数传入 'r' 表示以只读模式打开文件,第三个参数encoding='utf-8'
指定文件的编码为 UTF-8,这样可以确保正确读取包含中文等非ASCII字符的文本文件。 -
使用
file.read()
读取文件内容,并将内容存储在变量file_content
中。 -
使用字符串的
replace()
方法将old_string
替换为new_string
,并将修改后的内容存储在变量modified_content
中。 -
然后,我们再次打开同一个文件
file_path
,这次使用 'w' 模式(写入模式),这样我们可以将修改后的内容写回文件中。同样地,我们指定文件编码为 UTF-8。 -
使用
file.write()
方法将修改后的内容modified_content
写入文件中,从而完成了替换操作。 -
最后,我们打印一条消息,表示成功将
old_string
替换为new_string
。 -
如果在文件操作过程中出现错误,如文件找不到或其他异常,我们会通过
except
语句捕获该异常,并打印相应的错误信息。
二、利用b模式,编写一个拷贝工具,既可以拷贝文本又可以拷贝视频,图片等文件;mycopy.py a.bin b.bin mycopy.py a.txt b.txt
def copy_file(source_file, destination_file):try:with open(source_file, 'rb') as src_file:with open(destination_file, 'wb') as dest_file:while True:chunk = src_file.read(1024)if not chunk:breakdest_file.write(chunk)print(f'成功将 "{source_file}" 拷贝到 "{destination_file}"。')except FileNotFoundError:print(f"文件未找到:{source_file}")except Exception as e:print(f"出现错误:{e}")if __name__ == "__main__":# 源文件路径和目标文件路径source_file = 'source.txt' # 替换为实际的源文件路径destination_file = 'destination.txt' # 替换为实际的目标文件路径copy_file(source_file, destination_file)
代码解释如下:
-
我们定义了一个名为
copy_file
的函数,它接受两个参数:source_file
(源文件路径)和destination_file
(目标文件路径)。 -
在函数内部,我们使用
try
和except
语句来捕获可能出现的异常,比如文件找不到或其他错误。 -
我们使用
open
函数打开源文件source_file
,使用 'rb' 参数以二进制只读模式打开文件。这是因为二进制文件和文本文件的读取方式略有不同,我们需要使用二进制模式来确保正确地读取二进制文件。 -
同样地,我们使用
open
函数打开目标文件destination_file
,使用 'wb' 参数以二进制写入模式打开文件。这样我们可以将源文件的内容写入目标文件。 -
使用一个循环来读取源文件的内容,并以块为单位(这里是1024字节)进行读取。然后,我们将读取的内容写入目标文件,这样可以逐步将源文件的内容复制到目标文件中。
-
当读取的块变为空时,表示源文件已被完全复制到目标文件中,循环结束。
-
如果在复制过程中出现错误,比如文件找不到或其他异常,我们会通过
except
语句捕获该异常,并打印相应的错误信息。 -
在
if __name__ == "__main__":
这个条件下,我们检查脚本是否被直接运行而不是作为模块导入。如果脚本被直接运行,那么sys.argv
列表会包含命令行参数。 -
我们检查命令行参数的数量是否为3,因为第一个参数是脚本名称本身。如果不是3个参数,我们会打印一个使用说明。
-
如果命令行参数的数量正确,我们提取第二个和第三个参数作为
source_file
和destination_file
,然后调用copy_file
函数,将源文件的内容复制到目标文件中。