如何在文件路径中使用变量

时间:2019-02-19 06:38:21

标签: python

我有这个有效的代码,但目前尚无法完成全部工作,目前该代码创建了30个文件并也将其写入,但是我无法设法将这30个文件中的每个文件重命名为readme.ini并将其放入它的文件夹(列表中显示的数据库编号)

我想做的是创建这30个文件,并将每个文件放置在名为DB号的文件夹中

例如包含信息的文件应属于数据库编号“ 5030”,应放置在名为“ 5030”的文件夹中,列表文件夹中提到的所有那些数据库编号均已在我的桌面中的文件夹中创建,该文件夹的路径为C:\Users\Administrator\Desktop\readme1\

import datetime

SchoolDB = [5002, 5006, 5020, 5021, 5022, 5025, 5028, 5030, 5102, 5103, 5104, 5105, 5109, 5117, 5119, 5120, 5121, 5126,
        5130, 5131, 5132, 5133, 5134, 5135, 5136, 5137, 5205, 5211, 5238, 5244]
print (SchoolDB)
todayd = datetime.datetime.now().strftime ("%#d/%#m/%Y")
todayt = datetime.datetime.now().strftime ("%H:%M:%S")
for x in SchoolDB:
    dbs = open("%s.ini" % x, 'w+')
   dbs.write("%s \n%s \n\n%s \n%s \n\n%s \n%s \n" % ('[SCHOOL]',x,'[DATE]',todayd,'[TIME]',todayt))

我希望循环为列表中的每个数据库编号创建具有特定信息的readme.ini文件,并将此readme.ini文件放置在其数据库编号文件夹中。

5 个答案:

答案 0 :(得分:1)

您需要import os模块才能创建一个文件夹(具有数据库编号的名称),然后像这样在文件夹(具有相对路径)中创建readme.ini文件

import os
...
for x in SchoolDB:
    folder = os.mkdir("%s"%x) ## this will creare a folder with the name of x
    dbs = file.open("%s/readme.ini"%x,"w+") ## relative path to your file
    dbs.write("now write what ever you want")

答案 1 :(得分:0)

要使用可变文件名,

filename = '{} hello'.format(varname)

如果您要将多个变量传递给字符串,请使用

filename = '{} hello{}'.format(varname1,varname2)

在两种情况下,{}都将由variable值替换

然后只需用filename

打开

答案 2 :(得分:0)

您要寻找的是:     dbs = open(“ {}。ini” .format(x),'w +')

类似地,您想在输出的字符串上使用“” .format()。 在这种情况下,我发现它更具可读性:

dbs.write("""[SCHOOL]\n{}\n\n[DATE]\n{}\n\n[TIME]\n{}\n""".format(x, todayd, todayt)

答案 3 :(得分:0)

移动到父目录

Import os
os.chdir('PARENT_DIRECTORY_PATH')

为数据库创建新目录,并将目录更改为新数据库

for x in SchoolDB:
    os.mkdir(x)
    os.chdir(x)
    dbs = open("readme.ini" , 'w+')

答案 4 :(得分:0)

假设我理解正确,您希望创建一系列目录,并以SchoolDB中的值作为名称。在每个文件中,您希望有一个名为readme.ini的文件。鉴于这些假设,以下代码将完成任务:

import os
import datetime

SchoolDB = [5002, 5006, 5020, 5021, 5022, 5025, 5028, 5030, 5102, 5103, 5104,
5105, 5109, 5117, 5119, 5120, 5121, 5126, 5130, 5131, 5132, 5133, 5134, 5135,
5136, 5137, 5205, 5211, 5238, 5244]

todayd = datetime.datetime.now().strftime ("%#d/%#m/%Y")
todayt = datetime.datetime.now().strftime ("%H:%M:%S")

for number in SchoolDB:
    os.makedirs('{}'.format(str(number)), exist_ok=True)
    with open("{}/readme.ini".format(str(number)), 'w+') as dbs:
        dbs.write("[SCHOOL] \n{} \n\n[DATE] \n{} \n\n'[TIME]' \n{} \n".format(number, todayd, todayt))

一些注意事项:

number是一个内容更多的变量名。养成提高可读性的好习惯。

os.makedirs()中,如果您担心某个目录已经存在(可能是以前的运行),则可以将exist_ok=False设置为失败(如果该目录确实存在)。如果选择这样做,则需要处理如何处理代码中的情况。就目前而言,如果目录已经存在,则其中的任何readme.ini都将被新的目录覆盖。

现代的format()方法也是一种好习惯,您的常量名称也不必作为变量。只需将它们放在要格式化的字符串中,如下所示。

在处理文件时,最好使用with open()上下文管理器。就目前而言,您的每个文件都会保持打开状态,直到您dbs.close()或代码退出为止。这是不必要的,会导致复杂性,并且会使用过多的系统资源。