我创建了一个在visual代码中运行非常好的脚本,但我现在正在尝试自动化这个脚本,事实证明这有点棘手。我已经将该文件转换为用于自动化的Unix可执行文件,但是当我单击我的脚本时,我实现的代码并没有达到我想要的效果。
我有一行代码,可以更改目录中所有.csv文件的名称。
这是我所说的…的特定代码行
spath='/Users/emmanuel/Documents/Selenium/'
sourcefiles = os.listdir(spath)
for file in sourcefiles:
if file.endswith('.csv'):
os.rename(os.path.join(spath,file), "CC.csv")我想将.csv文件更改为CC.csv的名称,并使用此编码方法,因为.csv文件的名称在每次下载时都有不同的名称。
我现在遇到的问题是,当脚本到达代码的这一部分时,.csv文件就会从目录中消失并从源目录中移出,但我希望防止这种情况发生。原因是,我需要文件留在那里,以便进一步操纵熊猫模块。
是否有方法重命名目录中的所有.cvs文件,并在重命名后将它们保存在源目录中?
我已经在VSC中运行了这段代码,它运行得非常好,但是当我作为一个单元可执行文件运行它时,我得到了这个错误…
Traceback (most recent call last):
File "/Users/emmanuel/Documents/Selenium/OptionsBotCode.py", line 120, in <module>
CC = pd.read_csv('/Users/emmanuel/Documents/Selenium/CC.csv')
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", line 688, in read_csv
return _read(filepath_or_buffer, kwds)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", line 454, in _read
parser = TextFileReader(fp_or_buf, **kwds)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", line 948, in __init__
self._make_engine(self.engine)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", line 1180, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", line 2010, in __init__
self._reader = parsers.TextReader(src, **kwds)
File "pandas/_libs/parsers.pyx", line 382, in pandas._libs.parsers.TextReader.__cinit__
File "pandas/_libs/parsers.pyx", line 674, in pandas._libs.parsers.TextReader._setup_parser_source
FileNotFoundError: [Errno 2] No such file or directory: '/Users/emmanuel/Documents/Selenium/CC.csv'
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.我已经试过用
print(os.getcwd())我已经找到了文件应该传输到哪里,但是当我查看目录时,文件似乎不在那里。
要将内容放到上下文中,我需要“熊猫”模块来访问文件(为了操作它),但我需要根据文件类型(.csv)更改文件名,或者让熊猫访问文件类型而不是文件名。
这是因为,每次下载这个.csv文件时,它都有一个不同的名称,为了使用
pandas.read_csv 函数时,机器人每次都需要文件具有相同的名称,以便它可以重复这个过程。
更改多个文件名不会有任何问题,因为在我的脚本开始时,有一段代码可以清除目录中所有现有的.csv文件,所以只有一个文件是目标文件。我现在知道重命名不仅仅是重命名。如果源和目标都位于同一个文件夹中,它将将重命名的文件移到新目录中。但是,我希望将该文件保存在同一个目录中。
发布于 2020-11-29 02:49:53
若要将CSV保存在源目录中,请将该目录添加到目标名称。
spath='/Users/emmanuel/Documents/Selenium/'
dcsv = os.path.join(spath, "CC.csv")
sourcefiles = os.listdir(spath)
for file in sourcefiles:
if file.endswith('.csv'):
os.rename(os.path.join(spath,file), dcsv)注意,如果目录中有多个CSV,那么除了最后一个重命名的CSV之外,所有的CSV都将被删除。此外,如果运行这段代码时,旧的CC.csv仍然在该目录中,那么它可能是新的CC.csv,而不是您下载的文件。
发布于 2020-11-29 02:40:30
您应该先创建文件的副本,然后将原始文件重命名为目标目录。
from shutil import copy
spath='/Users/emmanuel/Documents/Selenium/'
sourcefiles = os.listdir(spath)
for file in sourcefiles:
if file.endswith('.csv'):
copy(src, dst)(os.path.join(spath,file), "CC.csv")下面是到docs的链接:https://docs.python.org/3/library/shutil.html
https://stackoverflow.com/questions/65056382
复制相似问题