Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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 For循环在csv文件中插入相同的数据两次_Python_Pandas_Csv_For Loop - Fatal编程技术网

Python For循环在csv文件中插入相同的数据两次

Python For循环在csv文件中插入相同的数据两次,python,pandas,csv,for-loop,Python,Pandas,Csv,For Loop,我用来检查修改过的文件的for循环出于某种原因插入了相同的文件数据两次。我希望将文件数据插入csv文件一次。我正在使用pandas将数据插入csv文件。如何修复此错误 问题代码: 0,__init__.py,2020-10-26 19:01:10 0,_mod_history.py,2020-31-10 09:58:00 0,modifications.csv,2020-31-10 10:13:16 0,.gitignore,2020-24-10 11:23:50 0,README.md,202

我用来检查修改过的文件的for循环出于某种原因插入了相同的文件数据两次。我希望将文件数据插入csv文件一次。我正在使用pandas将数据插入csv文件。如何修复此错误

问题代码:

0,__init__.py,2020-10-26 19:01:10
0,_mod_history.py,2020-31-10 09:58:00
0,modifications.csv,2020-31-10 10:13:16
0,.gitignore,2020-24-10 11:23:50
0,README.md,2020-22-10 17:38:07
0,README.md,2020-22-10 17:38:07
0,requirements.txt,2020-31-10 10:34:37
0,requirements.txt,2020-31-10 10:34:37
试试看:
PARENT_DIR=os.path.abspath('.'))
断言os.path.basename(父目录)=='Projects\u Website'
除断言错误外:
in_dir=False
不在目录中时:
os.chdir(“..”)
PARENT_DIR=os.path.abspath('.'))
尝试:
断言os.path.basename(父目录)=='Projects\u Website'
in_dir=True
打破
除断言错误外:
持续
_history=ModHistory.history(os.path.abspath('./src/mod_history'))
os.chdir(“....”)
PARENT_DIR=os.path.abspath('.'))
对于os.listdir(父目录)中的文件:
如果文件在MOD_文件中:
持续
其他:
modTime=os.path.getmtime(文件)
current=datetime.datetime.fromtimestamp(modTime).strftime(“%Y-%d-%m%H:%m:%S”)
历史
对于文件名,历史记录中的时间戳。items()
如果当前==时间戳且文件==文件名:
持续
其他:
如果是当前的!=时间戳和文件==文件名:
MOD_FILES.append(文件)
#此处用于更新csv文件的代码
elif文件!=文件名:
如果文件位于文件夹中:
持续
其他:
历史\u管理器=ModHistory(文件,当前)
历史记录管理器。插入历史记录()
os.chdir(“....”)
ModHistory:
\uuuuu init\uuuuu
并插入历史记录()来源:

0,__init__.py,2020-10-26 19:01:10
0,_mod_history.py,2020-31-10 09:58:00
0,modifications.csv,2020-31-10 10:13:16
0,.gitignore,2020-24-10 11:23:50
0,README.md,2020-22-10 17:38:07
0,README.md,2020-22-10 17:38:07
0,requirements.txt,2020-31-10 10:34:37
0,requirements.txt,2020-31-10 10:34:37
\uuuu初始化\uuuuu

def\uuuu init\uuuu(self、文件名、时间戳):
当前路径=os.path.abspath('.')
尝试:
断言os.path.basename(当前路径)=='mod\u历史'
除断言错误外:
如果os.path.basename(当前路径)=“项目\网站”:
os.chdir(“./src/mod_history”)
elif os.path.basename(当前路径)==“src”:
os.chdir(“./mod_history”)
当前路径
self.file=文件名
self.timestamp=时间戳
插入历史记录():

def插入_历史记录(自):
"""
将文件历史记录数据插入csv文件
"""
打印(self.file)
打印(自我时间戳)
df=pd.DataFrame({“filename”:[self.file],“timestamp”:[self.timestamp]},dtype='category')
df.to_csv(“modifications.csv”,encoding=“utf-8”,mode='a',header=False)
Csv文件:

0,__init__.py,2020-10-26 19:01:10
0,_mod_history.py,2020-31-10 09:58:00
0,modifications.csv,2020-31-10 10:13:16
0,.gitignore,2020-24-10 11:23:50
0,README.md,2020-22-10 17:38:07
0,README.md,2020-22-10 17:38:07
0,requirements.txt,2020-31-10 10:34:37
0,requirements.txt,2020-31-10 10:34:37

将日志记录放在每个循环中,打印它正在处理的文件。当你认为哪种情况只发生一次时,你就会看到哪种情况发生了两次。例如,如果一个文件在历史记录中列出两次,并且其中包含文件的两个副本(可能具有不同的日期),该怎么办
用于文件名,历史记录中的时间戳。items():