【问题标题】:Creating empty text files with specific names in a directory在目录中创建具有特定名称的空文本文件
【发布时间】:2017-10-24 08:47:14
【问题描述】:

我有两个目录:

dir = path/to/annotations

dir_img = path/to/images

dir_img中图片名称的格式为image_name.jpg

我需要在dir 中创建空文本文件为:image_name.txt,稍后我可以在其中存储与图像对应的注释。我正在使用 Python。

我不知道该怎么做。非常感谢任何帮助。谢谢。

[编辑]:我尝试了here 给出的答案。它运行没有任何错误,但也没有创建任何文件。

【问题讨论】:

  • fp = open('your_file_name', 'w') 和紧跟在fp.close() 之后将生成一个 0 大小的文件
  • 要打开或创建要写入的文件,您可以随时使用 - with open('/path/to/your_file', 'w+') as yourFile: pass
  • @GPhilo 我编辑了我的问题以合并它。

标签: python file


【解决方案1】:

这应该会为您创建空文件,然后您可以继续进行。

import os
for f in os.listdir(source_dir):
    if f.endswith('.jpg'):
        file_path = os.path.join(target_dir, f.replace('.jpg', '.txt'))
        with open(file_path, "w+"):
            pass

【讨论】:

  • 请原谅我不知道其中的微妙之处,但这与@Elias 的答案不一样吗?无论如何,仍然没有创建文件。
  • 是的。我应该在那里看看。您需要提供更多我认为运行此脚本的环境的详细信息。你有什么错误吗?否则,这个脚本没有理由不工作。
  • 我正在开发基于 Linux 8.5 的操作系统,Jessie。代码运行没有抛出任何错误。我还检查了我是否拥有target_dir 的写入权限。
  • 成功了。原来错误是在我这边;我使用了不正确的路径。感谢您的帮助。
【解决方案2】:

您可以使用模块os 列出现有文件,然后以w+ 模式打开文件,即使您没有向其中写入任何内容,也会创建该文件。不要忘记关闭您的文件!

import os
for f in os.listdir(source_dir):
    if f.endswith('.jpg'):
        open(os.path.join(target_dir, f.replace('.jpg', '.txt')), 'w+').close()

【讨论】:

    最近更新 更多