Python 如何读取文件夹中的所有文本文件内容,并将这些内容作为行复制到一个excel文件中

Python 如何读取文件夹中的所有文本文件内容,并将这些内容作为行复制到一个excel文件中,python,xlwt,Python,Xlwt,我在一个文件夹中有100个txt文件(名为pos)。我想复制所有文件内容并将它们粘贴为excel文件中的行。我从stackoverflow中找到了一些代码,但它们不起作用。请帮帮我 import xlwt import os import glob wbk = xlwt.Workbook() sheet = wbk.add_sheet('data') path= 'C:\tweet\pos' row = 0 for files in os.walk(path): ... for fi

我在一个文件夹中有100个txt文件(名为pos)。我想复制所有文件内容并将它们粘贴为excel文件中的行。我从stackoverflow中找到了一些代码,但它们不起作用。请帮帮我

import xlwt
import os
import glob

wbk = xlwt.Workbook()
sheet = wbk.add_sheet('data')
path= 'C:\tweet\pos'
row = 0

for files in os.walk(path):
...     for file in files:
...         if fnmatch(file, '*.txt'):
...             L = open(os.path.join( file), "r").read()
...             sheet.write(row,5,L)
...             row += 1
...             

wbk.save('read_all_txt_in_folders.xls')

下面的程序适合我

注:

  • '\t'
    被解释为选项卡,而不是路径分隔符。尝试使用前斜杠
  • 它是
    import-fnmatch
    /
    fnmatch.fnmatch(模式、文件)
    <代码>全局不是必需的
  • 我不得不从字符串中删除尾随的换行符。在我的测试用例中,使用
    L[:-1]
    就足够了。您可能需要一个更健壮的解决方案
  • os.walk()
    返回一个元组:
    (目录、子目录、文件)
  • 我已经在注释中留下了调试语句,以防它们对您有所帮助


一个问题是
\t
被解释为制表符。使用原始字符串:
r'C:\tweet\pos'
或正斜杠:
C:/tweet/pos
或转义反斜杠:
C:\\tweet\\pos
什么是“不工作”?相反会发生什么?您还导入了
glob
,但没有使用它。而且没有导入
fnmatch
同样,您是否将其粘贴到文件中?当以交互方式运行python时,“…”字符是提示的一部分。如果您在.P.s.中键入它们,它们将导致错误。专家们:是否有一个Pythonic表达式可以为所有
os.path.join(dir,file)
结果生成一个列表或生成器?(例如,
['./foo'、'./sub/bar'、'./sub/bar2'、'./sub2/bar']
?答案是:
(os.path.join(dir,file)表示dir,dirs,os.walk中的文件('.')表示文件中的文件)
。请参阅
import xlwt
import os
import fnmatch

wbk = xlwt.Workbook()
sheet = wbk.add_sheet('data')
row = 0

# sheet.write(1, 1, "Hello")

for (dir, dirs, files) in os.walk('.'):
     # print dir
     for file in files:
         # print " ", file
         if fnmatch.fnmatch(file, '*.txt'):
             L = open(os.path.join(dir, file), "r").read()
             # print "  ", L.__repr__()
             a = sheet.write(row,5,L[:-1])
             # sheet.write(row, 4, "hello")
             # print "   ", a
             row += 1

wbk.save('read_all_txt_in_folders.xls')