繁体   English   中英

fs::dir_ls() 为内部带有中文字符的文件路径返回不可读的 output

[英]fs::dir_ls() returns unreadable output for file paths with chinese characters inside

我正在使用fs::dir_ls()获取目录main_path下的 excel 文件路径,但由于文件路径中有汉字,我得到一个不可读的 output,我认为这可能与编码问题有关:

main_path <- '../../raw_data/2022-01-10/'
file_paths <- fs::dir_ls(main_path, regexp = ".xlsx") 
file_paths

出去:

../../raw_data/2022-01-10/閽㈤搧_鐒︾偔_浠峰樊_鐒︾偔J2201DCE鐒︾偔J2205DCE_涓诲姏_2022-01-10.xlsx
../../raw_data/2022-01-10/閽㈤搧_鐒︾偔_浠峰樊_鐒︾偔J2201DCE鐒︾偔J2209DCE_2022-01-10.xlsx

虽然list.files(path = main_path, pattern ='.xlsx')正确返回文件名:

[1] "甘其毛道库提价含税焦煤A23V2606SG85JM焦煤JM2201DCE_2022-01-10.xlsx"           
  [2] "甘其毛道库提价含税焦煤A23V2606SG85JM焦煤JM2205DCE_2022-01-10.xlsx"

我使用的fs package 的版本:

Warning message:
package ‘fs’ was built under R version 4.1.2 

有人知道如何处理这个问题吗? 或者是否有等效的方法来获取 R 目录下的 excel 文件路径? 谢谢。

更新:

我没有找到导致此错误的原因,它可能与 RStudio 的locale有关,因为它适用于我的 Mac 但不适用于 Windows 10 机器,我设置Sys.setlocale("LC_ALL","zh_CN.utf-8") ,也不起作用,但我找到了另一种解决方案:

file_names <- list.files(path = main_path, pattern ='.xlsx')
file_paths <- file.path(main_path, file_names)

出去:

[1] "../../raw_data/2022-01-10/甘其毛道库提价含税焦煤A23V2606SG85JM焦煤JM2201DCE_2022-01-10.xlsx"           
  [2] "../../raw_data/2022-01-10/甘其毛道库提价含税焦煤A23V2606SG85JM焦煤JM2205DCE_2022-01-10.xlsx"

参考:

https://github.com/r-lib/fs/issues/281

https://github.com/r-lib/fs/issues/164

fs package 的版本高于1.5.0时,问题是可用的,因此将fs降级到1.5.0可以使用代码修复它:

devtools::install_version("fs", "1.5.0")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM