有没有办法缩短 Mac (Python) 上的文件路径并减少数据帧?
Is there a way to shorten a file path on Mac (Python) and lessen the dataframes?
我已经尝试使用 os.path 功能。
比如我有这个文件路径:
/Users/GSteve_105/Documents/sites/Docs/Experiment/file1.csv
我想将其缩短为
/file1.csv
这样我就可以使用 pd.read 模块来读取文件。例如,我想这样做:
df1 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file1.csv")
df2 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file2.csv")
df3 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file3.csv")
df4 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file4.csv")
df5 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file5.csv")
df6 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file6.csv")
df7 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file7.csv")
df8 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file8.csv")
但是,显然有两件事妨碍了我:
- 文件路径名好长
- 我拥有的数据帧数量。我想将它们放在一起并“同时”阅读它们,这样我就不必遍历每一个并使代码更具可扩展性
有办法吗?
提前致谢!
os.path.join(os.path.split(r'/Users/GSteve_105/Documents/sites/Docs/Experiment/file1.csv')[1],'')
会做的。
如果您想进入当前目录,或者比方说当前目录的上一级目录,您可以使用:
import sys
sys.path.append('./')
简单的说,进入那个文件目录
sys.path.append('path/to/Experiment/')
以便在操作 csv 时可以像 somefunction("file1.csv") 一样引用它,而无需指定绝对路径。
您可以使用 for 循环来定义,而不是像那样手动定义变量,
并将变量附加到列表中。
df = []
amt = 8 # The amount of properly labeled csv files
for n in range(amt):
d = pd.read_csv(f"/Users/GSteve_105/Documents/sites/Docs/Experiment/file{n+1}.csv")
df.append(d)
想打df3
就打df[3]
,想打df5
就打df[5]
等
您还可以使用 glob
模块:
import glob
files = glob.glob("/Users/GSteve_105/Documents/sites/Docs/Experiment/file*.csv") # List all the csv file in the Experiment folder that begins with 'file'
我已经尝试使用 os.path 功能。
比如我有这个文件路径:
/Users/GSteve_105/Documents/sites/Docs/Experiment/file1.csv
我想将其缩短为
/file1.csv
这样我就可以使用 pd.read 模块来读取文件。例如,我想这样做:
df1 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file1.csv")
df2 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file2.csv")
df3 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file3.csv")
df4 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file4.csv")
df5 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file5.csv")
df6 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file6.csv")
df7 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file7.csv")
df8 = pd.read_csv("/Users/GSteve_105/Documents/sites/Docs/Experiment/file8.csv")
但是,显然有两件事妨碍了我:
- 文件路径名好长
- 我拥有的数据帧数量。我想将它们放在一起并“同时”阅读它们,这样我就不必遍历每一个并使代码更具可扩展性
有办法吗? 提前致谢!
os.path.join(os.path.split(r'/Users/GSteve_105/Documents/sites/Docs/Experiment/file1.csv')[1],'')
会做的。
如果您想进入当前目录,或者比方说当前目录的上一级目录,您可以使用:
import sys
sys.path.append('./')
简单的说,进入那个文件目录
sys.path.append('path/to/Experiment/')
以便在操作 csv 时可以像 somefunction("file1.csv") 一样引用它,而无需指定绝对路径。
您可以使用 for 循环来定义,而不是像那样手动定义变量,
并将变量附加到列表中。
df = []
amt = 8 # The amount of properly labeled csv files
for n in range(amt):
d = pd.read_csv(f"/Users/GSteve_105/Documents/sites/Docs/Experiment/file{n+1}.csv")
df.append(d)
想打df3
就打df[3]
,想打df5
就打df[5]
等
您还可以使用 glob
模块:
import glob
files = glob.glob("/Users/GSteve_105/Documents/sites/Docs/Experiment/file*.csv") # List all the csv file in the Experiment folder that begins with 'file'