Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.7k views
in Technique[技术] by (71.8m points)

python - Why is pandas read_csv able to find file but os.listdir isn't?

I have a file at ~/Google Drive/iNat/full.csv.

iNatPATH = r"~/Google Drive/iNat/"
FILENAME = iNatPATH + "full.csv"

I can't figure out why Pandas is able to read the csv file:

import pandas as pd
raw_data = pd.read_csv(FILENAME)

# no error returned.

But os can't find it:

import os
os.path.exists(FILENAME)

# outputs False

I am running this code in a macOS system on a local runtime in Google Colab.

My working directory is (not supposed to be relevant since I am using the absolute path):

>>> os.getcwd()
...
'/Users/<myusername>/Documents'

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Your problem is that os.path.exists() function doesn't expand the ~ character. To solve this, the same os module provides the os.path.expanduser(path) function that will expand that user variable in a path for you.

Applied to your case:

iNatPATH = r"~/Google Drive/iNat/"
FILENAME = iNatPATH + "full.csv"

# Expand the ~ character
FILENAME = os.path.expanduser(FILENAME)

# Finally you can check again with exists() function
os.path.exists(FILENAME)

Reference: https://docs.python.org/3/library/os.path.html#os.path.expanduser


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...