Python如何获取文件首尾字符、拷贝文件及解决FileNotFoundError报错
报错原因分析
- 文件名/路径匹配错误:Python读取相对路径文件时,默认以脚本运行时的工作目录为基准查找文件,报错提示文件不存在,本质是传入的文件名拼写有误、文件没有放在当前工作目录下,或是你实际运行的代码里存在动态生成文件名的逻辑错误(你贴出的测试代码调用
print_content('cure737.txt'),但报错提示的是找不到hjac737(my username).txt,二者文件名不匹配,可优先检查这部分逻辑)。 - 现有代码逻辑缺陷:你写的
input_file.close()在return语句之后,永远不会被执行,会导致文件资源泄漏;如果读取的文件为空,直接取content[0]/content[-1]会触发索引越界报错;此外你的代码完全没有实现文件拷贝的写入逻辑。
正确实现方案
推荐使用with上下文管理器处理文件操作,会自动完成文件关闭,无需手动调用close,避免资源泄漏问题:
def copy_file(input_filename, output_filename): # 读取输入文件内容 with open(input_filename, 'r', encoding='utf-8') as input_f: content = input_f.read() # 实现文件拷贝:将内容写入输出文件 with open(output_filename, 'w', encoding='utf-8') as output_f: output_f.write(content) # 处理空文件的边界场景,避免索引报错 if not content: return "" # 返回首尾字符 return content[0] + content[-1] # 打印文件内容的实现示例 def print_content(filename): with open(filename, 'r', encoding='utf-8') as f: print(f.read())
测试代码示例:
# 可传入绝对路径避免找不到文件的问题,比如Windows下r"C:\Users\xxx\Desktop\FreeAdvice.txt" input_f = "FreeAdvice.txt" output_f = "cure737.txt" first_last_chars = copy_file(input_f, output_f) print(first_last_chars) print_content(output_f)
内容的提问来源于stack exchange,提问作者Freddy
相关产品推荐
相关产品推荐

