我是一个一直让用户输入路劲的,代码如下
print("Please input the folder address")
path=input()
#这里输入是 "D:\AAA\BBB"
#D:AAA\BBB ---- 是copy文件夹的地址
print("Please input the excel name")
excel_name=input()
#这里输入是 "DDD"
#DDD是excel 的名字
print("Please input the sheet name")
sheet_name=input()
#这里输入是 "EEE"
#EEE是excel 所选 sheet 的名字
sheet_name="'"+sheet_name
FullPathName= path+excel_name+".xlsx"+"'"+","+sheet_name
df=pd.DataFrame(pd.read_excel(FullPathName))
我想我组装变量能直接读取到文件 类似如下
df=pd.DataFrame(pd.read_excel(r'D:\Share\AAA\BBB\CCC.xlsx',"EEE"))
但是一直不成功 报错提示我找不到这个文件
该回答引用NewBing,仅供参考,不保证完全正确
您好,您可以使用以下代码来读取文件:
import pandas as pd
import os
print("请输入文件夹地址")
path = input()
print("请输入Excel名称")
excel_name = input()
print("请输入Sheet名称")
sheet_name = input()
sheet_name = "'" + sheet_name + "'"
FullPathName = os.path.join(path, excel_name + ".xlsx")
df = pd.read_excel(FullPathName, sheet_name=sheet_name)
其中,os.path.join()
函数可以将多个路径组合成一个路径名,避免了手动拼接路径的麻烦。pd.read_excel()
函数中的sheet_name
参数可以指定要读取的工作表的名称或索引。¹⁴⁶
源: 与必应的对话, 2023/7/12
(1) os.path --- 常用路径操作 — Python 3.11.4 文档. https://docs.python.org/zh-cn/3/library/os.path.html.
(2) 最新Pandas.read_excel()全参数详解(案例实操,如何利用python导入excel) - 知乎. https://zhuanlan.zhihu.com/p/142972462.
(3) Python--pandas读取excel - 知乎. https://zhuanlan.zhihu.com/p/362709226.
(4) Python os.path 模块 | 菜鸟教程. https://www.runoob.com/python/python-os-path.html.
(5) 一文搞懂Python的文件路径操作 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/600048459.
(6) pandas.read_excel — pandas 2.0.3 documentation. https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html.
(7) 用python的pandas读取excel文件中的数据 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/409583146.
说明你对什么是转义一点都不清楚
用户输入的文字都是转义过的,像\r\n这种符号是根本没法通过键盘输入的
你把r这个字母拼接进字符串里根本起不到转义的作用,唯一作用就是本来好好的一个目录前面多了个r就变成个非法路径
你这种实现相当于把r和FullPathName拼接,这种可以使用f-string来格式化,比如
fullname = "a.b"
print(f'{fullname!r}')
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import shutil
#对象文件的类型指定
file_type_list = ['pdf','txt','xls','xlsx','pptx','doc']
src_folder = r'C:\Users\carry\Desktop\test001'
#取得文件夹下面的所有指定类型的文件全名(路径+文件名)
# os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。
# for dirpath,dirnames,filenames in os.walk(folder):
# print(dirnames)
def get_file_list(folder):
filelist = [] #存储要copy的文件全名
for dirpath,dirnames,filenames in os.walk(folder):
for file in filenames:
file_type = file.split('.')[-1]
if(file_type in file_type_list):
file_fullname = os.path.join(dirpath, file) #文件全名
filelist.append(file_fullname)
return filelist
#将文件list里面的文件拷贝到指定目录下
def copy_file(src_file_list, dst_folder):
print('===========copy start===========')
for file in src_file_list:
shutil.copy(file, dst_folder)
print('===========copy end!===========')
# filelist = get_file_list(src_folder)
if(__name__=="__main__"):
#copy源所在目录
src_folder = r'C:\Users\carry\Desktop\test001' #路径最后不要加\
#copy到的指定目录
dst_folder = r'C:\Users\carry\Desktop\target' #路径最后不要加\
#取得文件夹下所有指定类型的文件全名
filelist = get_file_list(src_folder)
copy_file(filelist, dst_folder)
参考:https://blog.csdn.net/bigear_yu/article/details/105387727