使用自适应路径在Python中自动读取.csv文件

使用自适应路径在Python中自动读取.csv文件,python,pandas,csv,path,Python,Pandas,Csv,Path,对于python或一般的编码,我是新手。我设置了一个脚本,读取各种.csv文件。我有一本私人笔记本和一本工作笔记本 如何自动读取名为“1.txt”、“2.txt”的文件的.csv。。。“22.txt”等? 以及如何根据系统/笔记本,随着用户名的更改,自动调整数据所在的路径 c1 = pd.read_csv(r"C:\Users\saram\Desktop\workspace\data\20200108Solid\1.txt", sep='\t', header=0, skiprows=range

对于python或一般的编码,我是新手。我设置了一个脚本,读取各种.csv文件。我有一本私人笔记本和一本工作笔记本

如何自动读取名为“1.txt”、“2.txt”的文件的.csv。。。“22.txt”等? 以及如何根据系统/笔记本,随着用户名的更改,自动调整数据所在的路径

c1 = pd.read_csv(r"C:\Users\saram\Desktop\workspace\data\20200108Solid\1.txt", sep='\t', header=0, skiprows=range1+range2, usecols=range3)
c2 = pd.read_csv(r"C:\Users\saram\Desktop\workspace\data\20200108Solid\2.txt", sep='\t', header=0, skiprows=range1+range2, usecols=range3)
c3 = pd.read_csv(r"C:\Users\saram\Desktop\workspace\data\20200108Solid\3.txt", sep='\t', header=0, skiprows=range1+range2, usecols=range3)
c4 = pd.read_csv(r"C:\Users\saram\Desktop\workspace\data\20200108Solid\4.txt", sep='\t', header=0, skiprows=range1+range2, usecols=range3)
c5 = pd.read_csv(r"C:\Users\saram\Desktop\workspace\data\20200108Solid\5.txt", sep='\t', header=0, skiprows=range1+range2, usecols=range3)
c6 = pd.read_csv(r"C:\Users\saram\Desktop\workspace\data\20200108Solid\6.txt", sep='\t', header=0, skiprows=range1+range2, usecols=range3)
c7 = pd.read_csv(r"C:\Users\saram\Desktop\workspace\data\20200108Solid\7.txt", sep='\t', header=0, skiprows=range1+range2, usecols=range3)
c8 = pd.read_csv(r"C:\Users\saram\Desktop\workspace\data\20200108Solid\8.txt", sep='\t', header=0, skiprows=range1+range2, usecols=range3)

如果您能帮助我,我将不胜感激。您可以使用字符串格式将数字替换为
{}

name = "path/filename{}.txt".format(number)
对于范围(1,9)中的数字,您可以在循环
中执行此操作:

您还可以使用列表将文件保存为
c[0]
c[1]
,因为您可以在其他循环中使用它们

c = []

for i in range(1, 9):
    name = r"C:\Users\saram\Desktop\workspace\data\20200108Solid\{}.txt".format(i)
    df = pd.read_csv(name, sep='\t', header=0, skiprows=range1+range2, usecols=range3)
    c.append(df)

您还可以使用
os.listdir(“文件夹”)
获取文件名

import os

c = []

folder = r"C:\Users\saram\Desktop\workspace\data\20200108Solid"

for name in os.listdir(folder)
    if name.endswith('.txt')
        fullname = os.path.join(folder, name)               
        df = pd.read_csv(fullname, sep='\t', header=0, skiprows=range1+range2, usecols=range3)
        c.append(df)
glob.glob(“folder/*.txt”)


如果两个系统中的文件名相同,您可以将文件路径设置为变量并将其传递给脚本。我将使用glob生成文件夹中的文件列表,然后创建一个函数来迭代列表并读取每个文件。非常感谢!这将在一个数据帧/熊猫中提供所有csv文件?如果我想把它读入一个变量呢?在以后的统计分析中,究竟是一只大熊猫更好,还是很多独立的大熊猫更好-P抱歉,如果我对词汇的使用不符合python的行为规则。Sarait不会在一个数据帧中提供所有数据,但(就像在代码中一样)它会创建许多数据帧,但会将它们保存在一个列表中-
c[0]
c[1]
,等等而不是使用分离变量
c1
c2
。您可以将此列表与c:do_something(df)-循环中的df:do_something(df)-一起使用,以缩短代码。至于统计分析:如果你必须使用分析中的所有数据,那么就使用一个数据框。太好了,非常感谢。如果我想跳过其中一个文件/一个数字,我将如何定义范围<范围(1,9)中的i的code>:您可以使用
remove()
删除一项
a=list(范围(1,9))
a.remove(4)
a.remove(6)
打印(a)
。但对于短程,您可以手动编写
[1、2、3、5、7、8]
。如果x不在[4,6]中,则最终使用其他列表
-即
用于范围(1,9)中的x:如果x不在[4,6]中,则打印(x)
您也可以使用
set()
类似
a=list(set(range(1,9))-set([4,6])
但set有时可能会改变顺序,您可能需要对其进行排序
a=sorted a
a.sort()
import glob

c = []

for fullname in glob.glob(r"C:\Users\saram\Desktop\workspace\data\20200108Solid/*.txt")
    df = pd.read_csv(fullname, sep='\t', header=0, skiprows=range1+range2, usecols=range3)
    c.append(df)