如果确实在下面的#循环中注释了文件名,它将为您提供目录中的所有文件名。但是当我调用pd.ExcelFile(filename)时,它返回的文件名为:[第一个以'.xlsx'结尾的文件,我缺少什么? p.s:下面的缩进是正确的,if在我的代码中位于for之下,但此处未以这种方式显示。
@Override
protected void onResume() {
super.onResume();
nextFragment = (NextFragment) getSupportFragmentManager().findFragmentById(R.id.fragm);
updateDetailFragmentTextViewWithIntentTag();
}
private void updateDetailFragmentTextViewWithIntentTag(){ nextFragment.updateTextView();
}
答案 0 :(得分:2)
问题在于您的工作目录与您列出的目录不同。因为您知道目录的绝对路径,所以最简单的解决方案是将os.chdir('/Users/ramikhoury/PycharmProjects/R/excel_files')
添加到文件的顶部。
答案 1 :(得分:0)
您的“ if”语句必须在for循环内
答案 2 :(得分:0)
问题是您试图从与列出目录不同的目录中打开相对文件路径。与其使用os
,还不如使用像pathlib
这样的更高级别的界面:
import pathlib
for file_name in pathlib.Path("/Users/ramikhoury/PycharmProjects/R/excel_files").glob("*.xslx"):
# this produces full paths for you to use
pathlib
是在Python 3.4中添加的,因此,如果您使用的是旧版本的python,则最好的选择是使用更老的glob
模块,该模块的功能类似:
import glob
for file_name in glob.glob("/Users/ramikhoury/PycharmProjects/R/excel_files/*.xslx"):
# this also produces full paths for you to use
如果出于某些原因您确实需要使用低级os
接口,则解决此问题的最佳方法是使用open
的{{3}}可选参数:< / p>
# open the target directory
dir_fd = os.open("/Users/ramikhoury/PycharmProjects/R/excel_files", os.O_RDONLY)
try:
# pass the open file descriptor to the os.listdir method
for file_name in os.listdir(dir_fd):
# you could replace this with fnmatch.fnmatch
if file_name.endswith(".xlsx"):
# use the open directory fd as the `dir_fd` argument
# this opens file_name relative to your target directory
with os.fdopen(os.open(file_name, os.O_RDONLY, dir_fd=dir_fd)) as file_:
# do excel bits here
finally:
# close the directory
os.close(dir_fd)
虽然您可以通过更改脚本顶部的目录来完成此修复(如另一个答案所建议),但这具有更改进程的当前工作目录的副作用,这通常是不希望的,并且可能产生负面影响。为了使这项工作没有副作用,需要您chdir
回到原始目录:
# store cwd
original_cwd = os.getcwd()
try:
os.chdir("/Users/ramikhoury/PycharmProjects/R/excel_files")
# do your listdir, etc
finally:
os.chdir(original_cwd)
请注意,这会在您的代码中引入竞争条件,因为original_cwd
可能会被删除,或者该目录的访问控制可能会更改,从而您无法chdir
回到它,这就是为什么dir_fd
存在。
dir_fd
是在Python 3.3中添加的,因此,如果您使用的是旧版本的Python,我建议您仅使用glob
而不是chdir
解决方案。
有关dir_fd的更多信息,请参见dir_fd
。