【问题标题】:How to create function to add extension to a file?如何创建向文件添加扩展名的功能?
【发布时间】:2021-07-20 02:49:19
【问题描述】:

我想创建一种方法来创建具有特定扩展名的文件。示例:我想创建test 并为其添加扩展名.txt 并将新文件放入/home/administrator

import os
import shutil
import datetime
import glob
import time

class Item:
    def __init__(self, nom, path, date):
        self.nom = nom
        self.path = path
        self.date = date

class Dossier:

    def AjouterExtension(self, nom, extension):
        """classe qui va ajouter une extension a un fichier"""
        path = "/home/administrator"
        if not os.path.exists(path):
            os.makedirs(path)

        filename = nom + extension
        with open(os.path.join(path, filename), 'wb') as temp_file:
            temp_file.write()

mon_doc = Dossier()
mon_doc.AjouterExtension("test", "txt")

错误:

Traceback (most recent call last):
  File "/home/administrator/PycharmProjects/pythonProject6/main.py", line 40, in <module>
    mon_doc.AjouterExtension("test2", "txt")
  File "/home/administrator/PycharmProjects/pythonProject6/main.py", line 33, in AjouterExtension
    filename = '.'.join(nom, extension)
TypeError: join() takes exactly one argument (2 given)

您对我的代码的解决方案更新:

import os
import shutil
import datetime
import glob
import time


class Item:
    def __init__(self, nom, path, date):
        self.nom = nom
        self.path = path
        self.date = date









class Dossier:




        def AjouterExtension(self, nom, extension):
            """classe qui va ajouter une extension a un fichier"""
            path = "/home/administrator"
            if not os.path.exists(path):
                os.makedirs(path)

            filename = '.'.join(nom, extension)
            name = "{}.{}".format(filename, extension.lstrip("."))
            with open(path, "w") as fh:
                pass  # or work with fh to add some content


mon_doc = Dossier()
mon_doc.AjouterExtension("test2", "txt")

【问题讨论】:

  • 这看起来不错 - 它应该做的不是什么?
  • /home/administrator/PycharmProjects/pythonProject6/venv/bin/python /home/administrator/PycharmProjects/pythonProject6/main.py Traceback(最近一次调用最后):文件“/home/administrator/PycharmProjects /pythonProject6/main.py",第 38 行,在 mon_doc.AjouterExtension("test", "txt") 文件中 "/home/administrator/PycharmProjects/pythonProject6/main.py",第 35 行,在 AjouterExtension temp_file 中。 write() TypeError: write() 只接受一个参数(给定 0)进程以退出代码 1 结束
  • 您需要在名称和扩展名之间添加一个点。你打算写什么到文件中?正如错误所说,你现在没有写任何东西。 filename = f"{nom}.{extension}"filename = '.'.join(nom,extension)
  • 您可以使用pass 来执行“什么都不做”操作而不是.write(),这将创建一个空文件(只需打开和关闭文件,根据w arg 创建它打开)
  • 或者你可以只写一个空字符串:temp_file.write('')

标签: python mkdir


【解决方案1】:

创建文件时,为文件扩展名添加.(感谢@Tim Roberts' comment

name = "{}.{}".format(filename, extension.lstrip("."))

你也可以像刚才那样创建一个空白文件

with open(path, "w") as fh:
    pass  # or work with fh to add some content

pathlib 一起工作也很愉快,可能有助于解决不寻常的路径要求

【讨论】:

  • 我有错误:/home/administrator/PycharmProjects/pythonProject6/venv/bin/python /home/administrator/PycharmProjects/pythonProject6/main.py Traceback(最近一次通话最后):文件“/ home/administrator/PycharmProjects/pythonProject6/main.py",第 40 行,在 mon_doc.AjouterExtension("test", "txt") 文件 "/home/administrator/PycharmProjects/pythonProject6/main.py",第 33 行, 在 AjouterExtension 文件名 = '.'.join(nom, extension) TypeError: join() 只采用一个参数(给定 2)进程以退出代码 1 结束
  • 如果你想使用.join() 而不是.format().join() 期待iterable,所以你可以(或者说必须)将值打包到列表或元组@987654330 @
  • 这是完全可选的,但在添加新句点之前调用 .lstrip(".") 可能会帮助一些输入(因为您的方法的用户不需要担心他们是否应该或不应该在扩展名前加上".") 例如 ".txt" 或 "txt"
  • Traceback(最近一次调用最后):文件“/home/administrator/PycharmProjects/pythonProject6/main.py”,第 40 行,在 mon_doc.AjouterExtension("test2", "txt" ) 文件“/home/administrator/PycharmProjects/pythonProject6/main.py”,第 33 行,在 AjouterExtension 文件名 = '.'.join(nom, extension) TypeError: join() 只需要一个参数(给定 2 个)
  • 我会推荐使用.format()而不是.join(),但是如果你使用它,参数必须是j((a,b)),而不是j(a,b);这是创建一个元组 (a,b) 并将其传递给 .join() “恰好一个参数”是 tuple
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 2012-12-10
  • 1970-01-01
  • 2022-12-19
  • 1970-01-01
  • 2012-12-24
相关资源
最近更新 更多