【问题标题】:Python code compiles but nothing is happeningPython 代码编译但没有任何反应
【发布时间】:2018-07-19 19:45:58
【问题描述】:

我试图将一个目录中的多个 csv 文件附加到另一个目录中的单个文件中。当我运行此代码时,它似乎编译成功,但没有生效。 combined.csv 文件在每次运行后保持为空。控制台中也没有错误。我在多个 IDE(vs code、pycharm 和 spyder)上尝试了这个。

import os
import glob    
import pandas

def concatenate(indir="/directoryA/directoryB/csvFile_directoryC",
                outfile="/directoryA/directoryB/combine.csv"):
    os.chdir(indir)
    filelist=glob.glob("*.csv")
    dfList=[]
    colnames=["c1","c2","c3","c4"]
    for filename in filelist:
        print(filename)
        df=pandas.read_csv(filename,header=None)
        dfList.append(df)
    concatDf=pandas.concat(dfList,axis=0)
    concatDf.columns=colnames
    concatDf.to_csv(outfile,index=None)

【问题讨论】:

  • 您似乎从未调用过您定义的函数。
  • 假设你的缩进实际上是正确的,你不要调用这个函数。
  • 您可以创建的最小示例是什么,但仍然无法正常工作?了解如何创建minimal reproducible example

标签: python python-3.x csv


【解决方案1】:

好吧,如果你不调用它,它不会打印任何东西;)

我认为您只是忘记在程序中调用您的函数,这就是它正在编译的原因,但由于该函数从未被调用,因此您永远不会得到打印。

【讨论】:

  • 这将是一个很好的评论。
  • @scharette 是的,但是很多人已经发表了评论,只是为 OP 提供官方答案
  • 大声哇,我有一个缓慢的时刻。不敢相信即使在我输入问题时我仍然没有听懂它。谢谢
【解决方案2】:

如果不是上面所说的(即您需要调用该函数),您实际上可能无法在该目录中找到任何 *.csv 文件。由于它是对 filelist 的 for 循环,因此如果 filelist 为空,您仍然会留下 dfList,它是一个空列表,但仍然可以在 concatDf 上进行 concat。

如果不是函数从未被调用,请尝试从 os.listdir() 打印结果以查看其中的内容供 glob 检查,并检查您的文件列表是否不是空列表。

【讨论】:

    猜你喜欢
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    相关资源
    最近更新 更多