Python 我的错误是由绝对路径问题引起的吗?

Python 我的错误是由绝对路径问题引起的吗?,python,pandas,python-os,Python,Pandas,Python Os,我正在尝试创建一个变量,该变量在我工作的目录中存储一个名为TimeSeries的文件夹。之后,我将尝试读取TimeSeries中的每个文件。显然,我的错误源于相对路径而不是绝对路径。但是,我无法确认这一点,因为当我检查isbs(direct)时,我得到的是True。我知道错误是关于那一行的,我只是不知道它是什么 代码: 结果: Traceback (most recent call last): File "C:/Users/USER/PycharmProjects/Corona Stats

我正在尝试创建一个变量,该变量在我工作的目录中存储一个名为TimeSeries的文件夹。之后,我将尝试读取TimeSeries中的每个文件。显然,我的错误源于相对路径而不是绝对路径。但是,我无法确认这一点,因为当我检查
isbs(direct)
时,我得到的是True。我知道错误是关于那一行的,我只是不知道它是什么

代码:

结果:

Traceback (most recent call last):
  File "C:/Users/USER/PycharmProjects/Corona Stats/Corona.py", line 9, in <module>
    df = pd.read_csv(f)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\io\parsers.py", line 676, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\io\parsers.py", line 448, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\io\parsers.py", line 880, in __init__
    self._make_engine(self.engine)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\io\parsers.py", line 1114, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\io\parsers.py", line 1891, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas\_libs\parsers.pyx", line 374, in pandas._libs.parsers.TextReader.__cinit__
  File "pandas\_libs\parsers.pyx", line 674, in pandas._libs.parsers.TextReader._setup_parser_source
FileNotFoundError: [Errno 2] File C does not exist: 'C'

Process finished with exit code 1


使用python或pandas时,当您使用read_csv或pd.read_csv时,它们都会查看当前工作目录,默认情况下,python进程是从该目录开始的。因此,您需要使用os模块创建chdir(),并从中获取它

import pandas as pd 
import os
print(os.getcwd())
os.chdir("<PATH TO DIRECTORY>")
print(os.getcwd())
df = pd.read_csv('<The Filename You want to read>')
print(df.head())
将熊猫作为pd导入
导入操作系统
打印(os.getcwd())
os.chdir(“”)
打印(os.getcwd())
df=pd.read_csv(“”)
打印(df.head())

在这里,您正在迭代路径中的每个字母:

direct = 'C:/Users/USER/PycharmProjects/Corona Stats/TimeSeries'

for f in direct:
    ...
如果要获取目录中的文件,应使用以下内容:

for item in os.listdir(direct):
    ...
我个人会使用
pathlib

from pathlib import Path

direct = Path('C:/Users/USER/PycharmProjects/Corona Stats/TimeSeries')

for item in direct.glob('*'):
    ...
IIUC:试试:

source = "C:/Users/USER/PycharmProjects/Corona Stats/TimeSeries"
for filename in os.listdir(source):
    filepath = os.path.join(source, filename)
    if not os.path.isfile(filepath):
        continue

    df = pd.read_csv(filepath)
    df = df.replace(np.nan, 'Other', regex=True)
    if df.columns[0] == 'FIPS':
        print(df.columns)
        df = df.drop(['FIPS', 'Last_Update', 'Lat', 'Long_'], axis=1)
        df = df.rename(columns={'Admin2': 'County',
                                'Province_State': 'State',
                                'Country_Region': 'Country',
                                'Combined_Key': 'City'})
        df.to_csv(filepath)
    elif df.columns[0] == 'Province/State':
        print(df.columns)
        df = df.drop(['Last Update'], axis=1)
        df = df.rename(columns={'Province/State': 'State',
                                'Country/Region': 'Country'})
        df.to_csv(filepath)

C:\Users\USER\PycharmProjects\Corona Stats\TimeSeries
您应该将其包含在问题中。不要在直接中迭代for循环,
for f:
错误就在这里。由于
os.path.abspath()
返回您的路径是
str
类型,并且您在for循环中迭代字符串。那么,我该怎么办?我在这一点上非常绝望。如果您想迭代目录中的文件,请使用
files=os.listdir(direct)
然后迭代
files
变量。如何输入目录的路径
C:\Users\USER\PycharmProjects\Corona Stats\TimeSeries
给了我无效的转义序列。在python
os.chdir(“”)中传递路径时,需要添加双\\而不是单\结果:
OSError:[WinError 123]文件名、目录名、,或者卷标语法不正确:'
您不需要在路径中添加<>括号,我已经提到,作为os.listdir(direct)中项的占位符:
生成:
FileNotFoundError:[Errno 2]文件01-22-2020.csv不存在:“01-22-2020.csv”
这是我遇到的问题。
glob
只返回退出代码0,不更改任何文件。
Timeseries
是什么?目录?它在哪里?这将返回
退出代码0
而不更改任何文件。将
df.columns[0]=['FIPS']
替换为
df.columns[0]='FIPS'
df.columns[0]=['Province/State']
替换为
df.columns[0]='Province/State'
from pathlib import Path

direct = Path('C:/Users/USER/PycharmProjects/Corona Stats/TimeSeries')

for item in direct.glob('*'):
    ...
source = "C:/Users/USER/PycharmProjects/Corona Stats/TimeSeries"
for filename in os.listdir(source):
    filepath = os.path.join(source, filename)
    if not os.path.isfile(filepath):
        continue

    df = pd.read_csv(filepath)
    df = df.replace(np.nan, 'Other', regex=True)
    if df.columns[0] == 'FIPS':
        print(df.columns)
        df = df.drop(['FIPS', 'Last_Update', 'Lat', 'Long_'], axis=1)
        df = df.rename(columns={'Admin2': 'County',
                                'Province_State': 'State',
                                'Country_Region': 'Country',
                                'Combined_Key': 'City'})
        df.to_csv(filepath)
    elif df.columns[0] == 'Province/State':
        print(df.columns)
        df = df.drop(['Last Update'], axis=1)
        df = df.rename(columns={'Province/State': 'State',
                                'Country/Region': 'Country'})
        df.to_csv(filepath)