Python题目---文件类型

文章介绍了如何使用Python编写程序实现文件中的字符串替换和二进制文件的拷贝功能。在字符串替换中,通过读取文件内容,使用replace()方法进行替换,再写回文件。在二进制拷贝中,使用rb和wb模式保证了文本和二进制文件的正确复制。
摘要由CSDN通过智能技术生成

一、编写一个程序,可以将指定文件中的字符串修改,比如将文件中所有的"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)

代码解释如下:

  1. 首先,我们定义了一个名为 replace_string_in_file 的函数,该函数接受三个参数:file_path(文件路径)、old_string(要替换的旧字符串)和 new_string(要替换成的新字符串)。

  2. 在函数内部,我们使用 tryexcept 语句来捕获可能出现的异常,比如文件找不到或其他错误。

  3. 我们打开指定路径的文件 file_path,使用 with open(...) as file 语句,这样可以确保在文件操作完成后自动关闭文件,无需手动关闭文件。

  4. 使用 open 函数的第一个参数传入文件路径 file_path,第二个参数传入 'r' 表示以只读模式打开文件,第三个参数 encoding='utf-8' 指定文件的编码为 UTF-8,这样可以确保正确读取包含中文等非ASCII字符的文本文件。

  5. 使用 file.read() 读取文件内容,并将内容存储在变量 file_content 中。

  6. 使用字符串的 replace() 方法将 old_string 替换为 new_string,并将修改后的内容存储在变量 modified_content 中。

  7. 然后,我们再次打开同一个文件 file_path,这次使用 'w' 模式(写入模式),这样我们可以将修改后的内容写回文件中。同样地,我们指定文件编码为 UTF-8。

  8. 使用 file.write() 方法将修改后的内容 modified_content 写入文件中,从而完成了替换操作。

  9. 最后,我们打印一条消息,表示成功将 old_string 替换为 new_string

  10. 如果在文件操作过程中出现错误,如文件找不到或其他异常,我们会通过 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:
                        break
                    dest_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)

代码解释如下:

  1. 我们定义了一个名为 copy_file 的函数,它接受两个参数:source_file(源文件路径)和 destination_file(目标文件路径)。

  2. 在函数内部,我们使用 tryexcept 语句来捕获可能出现的异常,比如文件找不到或其他错误。

  3. 我们使用 open 函数打开源文件 source_file,使用 'rb' 参数以二进制只读模式打开文件。这是因为二进制文件和文本文件的读取方式略有不同,我们需要使用二进制模式来确保正确地读取二进制文件。

  4. 同样地,我们使用 open 函数打开目标文件 destination_file,使用 'wb' 参数以二进制写入模式打开文件。这样我们可以将源文件的内容写入目标文件。

  5. 使用一个循环来读取源文件的内容,并以块为单位(这里是1024字节)进行读取。然后,我们将读取的内容写入目标文件,这样可以逐步将源文件的内容复制到目标文件中。

  6. 当读取的块变为空时,表示源文件已被完全复制到目标文件中,循环结束。

  7. 如果在复制过程中出现错误,比如文件找不到或其他异常,我们会通过 except 语句捕获该异常,并打印相应的错误信息。

  8. if __name__ == "__main__": 这个条件下,我们检查脚本是否被直接运行而不是作为模块导入。如果脚本被直接运行,那么 sys.argv 列表会包含命令行参数。

  9. 我们检查命令行参数的数量是否为3,因为第一个参数是脚本名称本身。如果不是3个参数,我们会打印一个使用说明。

  10. 如果命令行参数的数量正确,我们提取第二个和第三个参数作为 source_filedestination_file,然后调用 copy_file 函数,将源文件的内容复制到目标文件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值