Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python如何替换字符串模式并保存到文件中,通过字符串变量将文件从文件夹名重命名为文件名?_Python_String_Filenames - Fatal编程技术网

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)文件