跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 动态创建变量名并读取文件
未分類
19 4 月 2021

动态创建变量名并读取文件

动态创建变量名并读取文件

資深大佬 : badacook 9

大家好,请教大家一个问题
场景是 想读取一个目录下的 csv 文件,将各个文件读取后赋值给以文件名(不含扩展名)的变量,赋值读取那一行写不出来,实例如下
os.chdir(datapath)
filelist = os.listdir(datapath)
for item in filelist:
if item.endswith(‘.csv’):
#先将 以 item 的文件名为变量名 = pd.read_csv(item)

比如:存在 a.csv
a = pd.read_csv(a.csv)

大佬有話說 (13)

  • 資深大佬 : typetraits

    文件名存进 dict,然后访问 dict 里这些 key,这种思路怎么样

  • 資深大佬 : typetraits

    局部变量可以通过 locals()访问,实际也是个 dict,我觉得你这个需求可以直接通过把 pandas DataFrame 放进 dict 解决

  • 資深大佬 : minami

    用 exec 函数执行赋值语句

  • 資深大佬 : aijam

    globals()[item[:-4]] = pd.read_csv(item)

  • 主 資深大佬 : badacook

    @typetraits 为啥 还要转一步 ,能不能就在这个 for 内部 if 语句中完成啊,还要创建字典 再历遍字典啊

  • 主 資深大佬 : badacook

    @minami exec 函数执行赋值语句,exec “item[:-4]=pd.read_csv(item,encoding=’gbk’)” ,其中 item 如何解析为变量啊

  • 主 資深大佬 : badacook

    @minami
    exstr = “‘{0}'[:-4] = pd.read_csv({0},encoding=’gbk’)”.format(item)
    exec exstr
    按照 你说的 生成每个条目 的命令字符串,使用 exec 函数,无法执行 是否 exec 不支持变量字符串

  • 資深大佬 : minami

    @badacook #7 exec 是可以支持简单的变量赋值的,比如下面这样。太复杂的语句就不清楚了
    >>> b=1
    >>> exec(‘c=b’)
    >>> c
    1

  • 資深大佬 : pursuer

    @badacook 如果是赋值给模块作用域的变量,按照#4 的方式就可以了

  • 主 資深大佬 : badacook

    @pursuer 那个赋值 加载 csv 在 for 的 if 分支下,而且 想做到变量名与加载的 csv 文件同名,其实作用域是想做到 for 的外层使用,只是想着看看 在 for 的 if 分支 赋值加载时 可以动态,不知道能否实现

  • 資深大佬 : pursuer

    4#提供的那个 globals()[item[:-4]] = pd.read_csv(item)应该就可以了吧,如果你想做成一个独立的模块,然后修改调用者的作用域,那样的话需要将 global 传递过去,或者试着从调用栈找到调用者的模块,修改 sys.modules 。但后面这个我觉得不太好,可能意外的覆盖变量

  • 主 資深大佬 : badacook

    @pursuer 你如果有空 能不能试一试,就是一个目录下有几个 csv 文件,还可能有其他类型文件,要做的就是使用 pandas 库,将这些 csv 文件 以文件名变量的形式读进去,变量作用域在整个脚本范围,其中 globals()不是返回的全局字典嘛,作为 python 新手的我 实在有些不理解,其中 exec 函数 提供字符串命令的执行,感觉跟这个需求也有点儿接近,能不能试一试 也是个简单的小实验 我也想通过这个小实验 理解这个过程,谢谢了

  • 主 資深大佬 : badacook

    @aijam 非常感谢 globals() 与 vars() 均能实现 setting a string as a variable name,或者说 create variable variables in Python

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具