随机文件打开器有时不打开文件并崩溃
Posted
技术标签:
【中文标题】随机文件打开器有时不打开文件并崩溃【英文标题】:Random file opener does not open a file sometimes and crashes 【发布时间】:2021-03-02 00:39:50 【问题描述】:我正在编写一个程序,它在文件中选择一个随机文件夹并打开它。但是,它大部分时间都可以工作,但是当它没有选择文件时,它会崩溃并出现以下错误(这是代码的sn-p)...
文件“C:\Users\rbloc\OneDrive\Documents\Thesis\Python Scripts\FileRO.py”,第 51 行,在 fileopener 中 mystat = os.stat(randomFile)
builtins.FileNotFoundError: [WinError 3] 系统找不到指定的路径:''
代码如下:
def fileopener(logFile, StartTime, CloseTime):
#for loop through specified directory and copy append names of files into list
for root, dirs, files in os.walk(r"Y:\Documents\Data", topdown=True):
#time.sleep(randint(5,15))
for file in files:
file_list.append(os.path.join(root, file))
#select random file from the file list generated
randomFile = file_list[np.random.choice(len(file_list))]
我知道错误发生在最后一行,但我似乎无法修复它。有人有解决办法吗?
用新代码编辑:
所以我删除了导致问题的随机函数,只是让程序使用 for 循环打开文件并且效果很好。所以我把它缩小到随机函数,正如怀疑的那样,当它没有选择文件时会导致程序崩溃....
def fileopener(logFile, StartTime, CloseTime):
#for loop through specified directory and copy append names of files into list
for root, dirs, files in os.walk(r"Y:\Documents\Data", topdown=True):
#time.sleep(randint(5,15))
for file in files:
randomFile = os.path.join(root, file)
#print time stamp for operation that opened and open random file/folder selected
print("Time OPENED ", timeopen(), " file is: ", randomFile)
【问题讨论】:
您可以在打开之前尝试打印路径。所以你至少可以检查文件是否真的存在。 @MichaelButscher 问题是,路径中有文件。我只需要它从目录中选择一个随机文件。但是它有时会选择不选择文件。它应该总是随机选择一个文件,因为目录中有文件。 您可以在循环之后移动 random.choice 以期望您的 file_list 包含所有文件并验证是否 len(filelist)> 0 因为如果它等于 0 随机选择会产生错误。numpy.random.choice
的参数应该是您要从中选择项目的数组,而不是数字。投票结束为错字。 (无论如何,你几乎不需要numpy
来生成一个随机整数。)
@tripleee 你能推荐一个替代选择随机文件功能的方法吗?
【参考方案1】:
此代码适用于我
import os
import numpy as np
def fileopener(logFile, StartTime, CloseTime):
file_list = []
#for loop through specified directory and copy append names of files into list
for root, dirs, files in os.walk("Y:\Documents\Data", topdown=True):
#time.sleep(randint(5,15))
for file in files:
file_list.append(os.path.join(root, file))
#select random file from the file list generated
randomFile = file_list[np.random.choice(len(file_list))]
print(randomFile)
【讨论】:
以上是关于随机文件打开器有时不打开文件并崩溃的主要内容,如果未能解决你的问题,请参考以下文章