Python; 如何替换字符串模式并保存到文件,按文件夹名的字符串变量重命名文件?
我在电脑里为每个产品都建了一个文件夹;
/PRODUCTS/PRODUCT_XXX
/PRODUCT_001
/PRODUCT_002
/PRODUCT_003
/PRODUCT_004
/PRODUCT_005
...
/PRODUCT_999
每个文件夹里都有一个叫 PRODUCT_XXX.html 的文件,还有产品的图片和数据...
如果我想改变 HTML 的布局,我不想重新制作所有的 PRODUCT_XXX.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 等等,但没能成功保存 PRODUCT_555.html 文件。怎么用字符串变量名来保存文件呢?我试着在网上找一些例子,但感觉很难找到...
3 个回答
0
如果我有一个叫做 index_numbers.txt 的文件,里面有数字 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
- ...
0
你想要的是这个:
f2 = open('/PRODUCT_{0}/PRODUCT_{0}.html'.format(prodnum), 'w')
2
你缺少了一个%
,比如说:
f2.write(line.replace('PRODUCT_XXX', 'PRODUCT_%d' % prodnum)) # note lowercase d
不过用str.format
来写会更清晰,也不容易出错:
f2.write(line.replace('PRODUCT_XXX', 'PRODUCT_{0}'.format(prodnum)))