双斜杠字符串在函数中变为单斜杠



我正在尝试使用python中的'exec'命令读取文件。因此,我定义了一个称为"importing_data"的函数。该函数输入需要从中读取数据的文件夹的路径。

打印路径带有双反斜杠。

print(path) 

'C:\\Users\\evarxxx\\Desktop\\Raw_Data'

def importing_data(path,var):
data_file_list=list_of_files(path)
print(data_file_list)
Data_Raw=[0]*len(data_file_list)
order={'Aug':0,'Sep':1,'Oct':2,'Nov':3,'Dec':4,'Jan':5,'Feb':6,'Mar':7}
data_so=pd.DataFrame()
for i in data_file_list:
mon= i.split(".")[0][:3]
if(mon=='Aug'):
continue
ext=i.split('.')[1]
dictt={'csv':'pd.read_csv','xlsx':'pd.read_excel'}
command=dictt[ext]+"('"+path+'\'+i+"')"
print(command) 
return command
temp=exec(command)
return temp

但是当我打印函数内部的路径时,它带有一个反斜杠。

pd.read_csv('C:\Users\evarxxx\Desktop\Office Work\Lead Segmented Time\New_Data\NewTechniques\Raw_DataDecember.csv'(

并给出以下提到的错误:-

(unicode错误("unicodeescape"编解码器无法解码位置2-3中的字节:截断\UXXXXXXXX转义

(此处data_file_list=["August.xlsx","十二月.csv"](

我甚至试过更换

path = path.replace("\", '\\');
command=dictt[ext]+"('"+path+r'\'+i+"')"

但在这种情况下,在temp中,读取的不是数据帧,而是none类型

这里我有两个问题

1( 为什么双反斜杠在函数内外打印方式不同

2( 如何使用exec读取文件夹中的csv文件

您能显示list_of_files((的函数定义吗?

我建议你以这种方式迭代你的文件:

import os
def list_of_files(path):
fileList = list()
for filename in os.listdir(path):
fileList.append(os.path.join(path,filename))
return fileList
  1. 我建议在打开目录中的文件时始终使用os.path.join()
  2. 读取1

这里有一个例子:

import os
path = 'C:\Users\evarxxx\Desktop\Raw_Data'
nested_dir = 'New_Data'
filename = 'Raw_DataDecember.csv'
df = pd.read_csv(os.path.join(path, nested_dir, filename)

此外,要获取当前工作目录的路径(代码所在的位置(,请使用os.getcwd()——这是获取文件所在的参考点的好方法。

  1. As在doc exec中的工作原理是:如果它是一个字符串,则该字符串被解析为一组Python语句,然后执行。因此,高管内外的行为各不相同。

  2. exec不返回任何内容,因此您必须在传递给exec 的命令中进行初始化

    exec('''df = pd.read_csv('yourfilepath.csv')''')

最新更新