python如何替换字符串模式并保存到文件中,通过字符串变量将文件从文件夹名重命名为文件名?
我为文件系统中的每个产品都有自己的文件夹python如何替换字符串模式并保存到文件中,通过字符串变量将文件从文件夹名重命名为文件名?,python,string,filenames,Python,String,Filenames,我为文件系统中的每个产品都有自己的文件夹 /PRODUCTS/PRODUCT_XXX /PRODUCT_001 /PRODUCT_002 /PRODUCT_003 /PRODUCT_004 /PRODUCT_005 ... /PRODUCT_999 每个文件夹都有PRODUCT_XXX.html文件以及产品的图片和数据 我不想重做所有的PRODUCT_XXX.html文件 如果我想改变html的布局 我希望在根文件夹中有一个PRODUCT_XXX.html文件 /PRODUCTS/PRODU
/PRODUCTS/PRODUCT_XXX
/PRODUCT_001
/PRODUCT_002
/PRODUCT_003
/PRODUCT_004
/PRODUCT_005
...
/PRODUCT_999
每个文件夹都有PRODUCT_XXX.html文件以及产品的图片和数据
我不想重做所有的PRODUCT_XXX.html文件
如果我想改变html的布局
我希望在根文件夹中有一个PRODUCT_XXX.html文件
/PRODUCTS/PRODUCT_XXX.html
然后将其复制到所有产品编号文件夹,
仅替换模式XXX-->文件夹名称中的产品编号
prodnum = "555" # Actually, would need to read the Product Number from the OS
folder name..
# But will do that later, after I get this on the below working...
f1 = open('PRODUCT_XXX.html', 'r')
f2 = open('/PRODUCT_%D/PRODUCT_%D.html', prodnum, 'w' )
for line in f1:
f2.write(line.replace('PRODUCT_XXX', 'PRODUCT_%D', prodnum))
# (then later could do also other things here..)
f1.close()
f2.close()
我正在尝试%D,%s。。。但无法获取并保存产品_555.html文件
如何按字符串变量名保存文件?尝试通过谷歌搜索一些示例,但似乎很难找到这些示例。您希望这样:
f2 = open('/PRODUCT_{0}/PRODUCT_{0}.html'.format(prodnum), 'w')
您缺少
%
,例如
f2.write(line.replace('PRODUCT_XXX', 'PRODUCT_%d' % prodnum)) # note lowercase d
但是使用str.format
,这会更清晰,更不容易出错:
f2.write(line.replace('PRODUCT_XXX', 'PRODUCT_{0}'.format(prodnum)))
如果我有一个索引,带有数字1,2,3,4,5,6。。。1000一行一个数字
import shutil
file_read = open("index_numbers.txt", 'r')
def do_the_thing(indexnum):
print(indexnum)
file1 = open("fileXXX.html", 'r')
file2 = open("file{0}.html".format(indexnum), 'wb')
for line in file1:
file2.write(line.replace('XXX', '%s' % indexnum))
file1.close()
file2.close()
line_from_file = file_read.readline()
for line_from_file in file_read:
print(line_from_file)
line_from_file = line_from_file[0:-1]
indexnum = line_from_file
shutil.copy2('fileXXX.html', 'file{0}.html'.format(indexnum))
do_the_thing(indexnum)
file_read.close()
像这样的东西就行了?但若要替换文件中的更多文本字段,如何修改此脚本
- replace the XXX with the index number
- replace the YYY with Product short name
- replace the ZZZ with Product long name
- ...
请注意,
%d
不会给你'001'
,它会给你'1'
(而且%d
不会给你任何东西;我不知道你从哪里得到的)。您需要%03d
以0到3的宽度翻页。或者,如果你切换到str.format
,如答案所示,{0:03}
或{0:03d}
,而不仅仅是{0}
。第一种方法不起作用;它只会引发一个ValueError
,因为没有格式字符'D'
。但这是OP的错误,不是你的错误,它完美地说明了你的下一句话:str.format
更清晰,更不容易出错…@abarnert-fixed,谢谢;我从来没有正常使用过%
,尽管我仍然应该测试它!导入shutil文件read=open(“index\u numbers.txt”,“r”)def do\u thing(indexnum):print(indexnum)file1=open(“fileXXX.html”,“r”)file2=open(“file{0}.html”)。格式化(indexnum),'wb'),用于文件1中的行:file2.write(line.replace('XXX','%s'%indexnum'))file1.close()file2.close()文件中的文件中的文件中的行打印(文件中的行)文件中的行打印(文件中的行打印)文件中的行打印(文件中的行打印)文件中的行打印(文件中的行打印)文件中的行打印[0:-1]indexnum=shutil.copy2('fileXXX.html','file{0}.html'.format(indexnum))文件中的行打印(indexnum)文件