【python】新手求解决问题

ipyter 2020-06-30 08:48:47
问题:已经存在文件夹1和文件夹2,文件夹1内有多个Excel(每类多个),文件夹2内有按文件夹1内文件的分类设置的数据模板,需求:若文件夹1内的文件名称(如:第一期Ab.xlsx)包含了文件夹2内的文件名称(如:第一期.xlsx),则将符合条件的文件夹1内的文件(如:第一期Ab.xlsx)的部分数据写入文件夹2内的数据模板(如:第一期.xlsx),再以写入数据的某个值来命名新文件并保存。

刚接触Python,求各位大神帮忙解决。万分感谢。
...全文
192 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ipyter 2020-07-04
  • 打赏
  • 举报
回复
嗯。非常感谢@chuifengde的耐心回复,我不胜感激。模板不多的,我目前的笨办法是通过输入不同的file2路径的办法来解决上面的第一个问题的(1个模板放1个文件夹)。 非常喜欢您用到的updateData函数,热盼您能对上面的第一个问题分享下代码。再次致以感谢!
ipyter 2020-07-04
  • 打赏
  • 举报
回复
非常感谢了!
chuifengde 2020-07-04
  • 打赏
  • 举报
回复
你的方法就很好,不用改
chuifengde 2020-07-03
  • 打赏
  • 举报
回复
这两个问题都不是技术上的问题,是业务上的问题 第一个可以在updateData函数中加一个参数,来区分你选用哪套模板,函数体内针对不同的模板写不同的编码,我想你们的模板再变化总不会很多。 第二个问题,你可以将文件名后面加一个_时间来区分,或者干脆就在workbook里加多个sheet
ipyter 2020-07-03
  • 打赏
  • 举报
回复
又发现了新问题:在把file1符合条件的数据写入file2模板的过程中,如果file2的模板出现变化,就会报错。请问有没有便捷的方法解决?还有,在把数据写入模板文件保存命名时(命名以file1中文件的页码作为new_excel的名称),若遇到页码相同时如何解决? 期盼解答。更期盼学习精炼的代码,非常感谢!
chuifengde 2020-07-02
  • 打赏
  • 举报
回复
不晓得你要改什么,写一个启发性示例吧:
import os
import xlrd
def updateData(filename1, filename2):
    with xlrd.open_workbook(filename1) as f1:
        sn = f1.sheet_by_index(0)
        for _ in range(sn.nrows):
            row = sn.row_values(_)
            print(row)
            
def getFileNameList(tmpDir):
    ff = []
    for r, d, f in os.walk(tmpDir):
        for _ in f:
            a, b = os.path.splitext(_)
            tf = (r + '\\', a, b)
            ff.append(tf)
            
    return ff

dir1,dir2 = r"c:\file1", r'c:\file2'
f1 = getFileNameList(dir1)
f2 = getFileNameList(dir2)

for ff2 in f2:
    for ff1 in f1:
        if ff2[1] in ff1[1]:
            updateData(''.join(ff1), ''.join(ff2))
ipyter 2020-07-02
  • 打赏
  • 举报
回复
引用 3 楼 chuifengde 的回复:
这个不难吧, 1.导入os,xlrd模块 2.利用os的walk取出file1,file2中所有的文件名,并将文件名拆分成文件与后缀 3.对2中取得的file1所有文件遍历,对照file2中是否有包含文件,有就分别利用xlrd打开文件,取出数据写入模板
如果有可能,非常期盼您分享代码。非常感谢您
ipyter 2020-07-02
  • 打赏
  • 举报
回复
非常感谢!您简练的代码完美解决了问题。
chuifengde 2020-07-01
  • 打赏
  • 举报
回复
这个不难吧, 1.导入os,xlrd模块 2.利用os的walk取出file1,file2中所有的文件名,并将文件名拆分成文件与后缀 3.对2中取得的file1所有文件遍历,对照file2中是否有包含文件,有就分别利用xlrd打开文件,取出数据写入模板
ipyter 2020-07-01
  • 打赏
  • 举报
回复
重新描述下问题(之前描述过于复杂非常抱歉,做这样修改不知如何?): 已经存在文件夹file1和文件夹file2,file1内有多个Excel(如:第一期Aa.xlsx,第一期Ab.xlsx,第二期Ba.xlsx,第二期Bb.xlsx等文件),file2内有需要的数据模板(如:第一期.xlsx,第二期.xlsx),需求: 若file1内的文件名称(如:第一期Ab.xlsx)包含了文件夹2内的文件名称(如:第一期.xlsx),则将符合条件的file1内的文件(如:第一期Ab.xlsx)的部分单元格数据写入file2内的数据模板(如:第一期.xlsx),再以写入数据的某个值(数字)来命名新文件并保存。 用文字这样概况可能会清楚些: 若源文件夹的某个文件名称包含了目标文件夹中的某个文件名称,则从源文件夹的文件向目标文件夹的文件写入数据,再按写入的某个数字值保存。 非常感谢楼上朋友的疑问。朋友跟我说,我也思考了很久,也写了多次代码,都发现有错误。特求帮忙解决。万分感谢。
weixin_45903952 2020-07-01
  • 打赏
  • 举报
回复
我能说,没怎么看明白不

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧