python writelines或者write写入文件,打开空白问题

本文介绍了一个在PyCharm环境下使用f.write()和f.writelines()进行文件写入时遇到的问题及解决方法。作者最初尝试使用绝对路径写入文件,但发现文件为空。通过更改路径为相对路径后,问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在pycharm项目中用 f.write()和f.writelines()写入时正常,不报错,但是发现内容没有进去?
解决方法,就是将绝对路径改为相对路径

原本:"C:/Users/90647/PycharmProjects/MyNetFunction/data/vocab.txt"
修改:out_dir = '../data/vocab.txt'

怪不得打开一直是空白!!!!唉

### Python 文件写入和读的示例教程 #### 1. 基础概念 在 Python 中,文件操作是一个常见的需求。通过 `open()` 函数可以轻松完成文件打开、关闭以及数据的读取与写入。`open()` 的基本语法如下: ```python file_object = open(file_name, mode='r', encoding=None) ``` 其中: - `file_name`: 要打开文件名称或路径。 - `mode`: 打开文件的方式,默认为只读模式 `'r'`。 - `encoding`: 可选参数,用于指定编码方式。 #### 2. 文件写入操作 为了安全地处理文件资源并自动管理其生命周期,推荐使用上下文管理器 (`with`) 来执行文件写入操作[^2]。下面展示了一个简单的例子来说明如何向文件写入字符串内容: ```python content_to_write = "这是一个测试。\n这是第二行。" with open('example.txt', 'w', encoding='utf-8') as file: file.write(content_to_write) ``` 上述代码会创建名为 `example.txt` 的新文件并将给定的内容写入文件中。如果目标文件已存在,则会被覆盖;若需追加而非覆盖现有内容,可改用 `'a'` 模式代替 `'w'` 模式[^4]。 对于更复杂的数据结构比如列表,也可以逐项将其转换成字符串形式再存入文档里: ```python data_list = ['item1\n', 'item2\n', 'item3'] with open('list_output.txt', 'w', encoding='utf-8') as f: f.writelines(data_list) ``` 此段脚本利用了 `writelines()` 方法一次性将整个序列中的所有项目连续断地记录下来。 #### 3. 文件读取操作 同样采用 `with...as` 结构能够简化异常捕获逻辑并且确保最终总会调用 close() 关闭流对象。以下是几种典型的读取场景演示: ##### (1)按字节大小分批加载大容量资料 当面对超大规模档案时,宜一次性全部载入内存以免造成负担过重的情况发生。此时可以通过循环逐步获取部分内容直至结束为止: ```python chunk_size = 1024 * 1024 # 定义每次读取的最大长度单位为MB级别 try: with open('large_file.bin', 'rb') as binary_f: chunk = binary_f.read(chunk_size) while chunk: process_data(chunk) # 自定义业务逻辑函数模拟实际用途 chunk = binary_f.read(chunk_size) except Exception as err: handle_error(err) # 错误处理器 finally: pass ``` ##### (2)逐行解析文本型材料 针对普通的纯文字档来说,通常我们关心的是每一行的具体含义而是整体布局关系。因此借助迭代机制逐一访问每条记录往往更为直观方便一些[^1]: ```python line_count = 0 with open('sample_text.txt', 'rt', encoding='utf-8') as txt_f: for line in txt_f: print(f"{line_count}: {line.strip()}") # 移除多余空白符后打印出来便于观察效果 line_count += 1 ``` 以上程序片段实现了统计总共有多少行有效信息的功能同时展示了它们各自的位置编号。 #### 4. 综合案例分析——文件复制功能实现 最后给出一个综合性的实战演练题目即把某个特定位置下的原始素材完整迁移到另一处存储空间去: ```python source_path = input("请输入源文件全路径:") destination_dir = "/target/directory/" import os.path if not os.path.isdir(destination_dir): raise ValueError("目标目录存在!") basename = os.path.basename(source_path) try: with open(source_path, 'rb') as src_f,\ open(os.path.join(destination_dir, basename), 'wb') as dest_f: buffer = src_f.read(1024*64) # 设置缓冲区大小适当调整性能表现 while buffer: dest_f.write(buffer) buffer = src_f.read(1024*64) except IOError as io_err: report_failure(io_err.args[0]) else: confirm_success() ``` 这段完整的解决方案仅考虑到了跨平台兼容性还兼顾效率方面做了优化设置合理的块传输尺寸从而达到最佳平衡状态。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值