[英]Is there a to stop os.rename from moving a file?
我創建了一個在 Visual Studio 代碼中運行良好的腳本,但我現在正在嘗試自動化該腳本,這被證明有點棘手。 我已經將該文件轉換為 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 文件會從目錄中消失並從源目錄中移動,但我想防止這種情況發生。 原因是我需要將文件保留在那里以便被 pandas 模塊進一步操作。
有沒有辦法重命名一個目錄中的所有 .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)更改文件名或讓 pandas 訪問文件類型而不是文件名。
這是因為,每次下載 this.csv 文件時,它都有不同的名稱,為了使用
pandas.read_csv
function,機器人每次都需要文件具有相同的名稱,以便重復該過程。
更改多個文件名不會有任何問題,因為在我的腳本開始時,有一段代碼清除了目錄中所有現有的.csv 文件,因此它只是一個目標文件。 我現在明白重命名不僅僅是重命名。 如果源和目標都在同一個文件夾中,它會將重命名的文件移動到新目錄中。 但是,我想將文件保存在同一目錄中
看來您應該先創建文件的副本,然后將原始文件重命名為目標目錄。
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")
要將 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,則除最后一個重命名的文件之外的所有文件都將被刪除。 此外,如果運行此代碼時舊的 CC.csv 仍在該目錄中,則它可能最終成為新的 CC.csv 而不是您下載的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.