python - 如何在python的ELIF Block语句中使用IF Block语句的变量?
问题描述
运行此代码时,我收到错误“分配前引用的局部变量“文件””。我认为变量 Files 的范围仅限于 IF 块。有什么建议么?
import shutil
import os
import logging
import time
import re
timestr = '_'+time.strftime("%Y%m%d-%H%M%S")
logging.basicConfig(filename =
"//p4products//nemis2//filehandlerU//ENSUBAPP_log//ENSUBAPP.log"+timestr, level = logging.INFO,
format = '%(asctime)s:%(levelname)s:%(message)s')
src_dict = "//p4products/nemis2"
pattern = re.compile ("Ena3s5npf_g")
def Search_String_File(src_dict,pattern):
for x in os.listdir(src_dict):
print(x)
if os.path.isfile(os.path.join(src_dict, x)):
files = os.path.join(src_dict,x)
strng = open(files)
for lines in strng.readlines():
try:
if re.search(pattern, lines):
print (re.split(r'=', lines))
except Exception as e:
print(e)
pass
elif x != "ENSUBAPP_search.py":
return Search_String_File(files,pattern)
Search_String_File(src_dict,pattern)
解决方案
我认为变量 Files 的范围仅限于 IF 块
这是正确的,所以将它移动到不同的范围(循环)
def search_string_file(src_dist, pattern):
for x in os.listdir(src_dict):
print(x)
child = os.path.join(src_dict,x)
if os.path.isfile(child):
with f as open(child):
for line in f:
try:
if re.search(pattern, line):
print (re.split(r'=', line))
except Exception as e:
print(e)
elif x != "ENSUBAPP_search.py":
search_string_file(child, pattern)
注意:您可能想使用os.walk
oros.glob
代替listdir
推荐阅读
- python - 使用 pandas 数据框根据日期范围创建新变量并应用条件值
- python - NotImplementedError:在 `__init__` 中有参数的层必须覆盖 `get_config`
- android - 我有一个实现的 android Webview,但无法通过代码上传个人资料图片
- string - 是否可以将无限字符串打印到文本文件c#
- javascript - 究竟是什么时候在未安装的组件上发生 React 状态更新警告?
- kubernetes - 我对 Mac 机器上的“minikube start”有疑问
- google-bigquery - 使用 BigQuery 和 Data Studio 计算和显示客户生命周期价值直方图
- jenkins - 詹金斯:有没有办法在运行后更改职位描述?
- python - 在 matplotlib 上绘制条形图
- ios - NavigationLink 不适用于 SwiftUI 列表中的 ScrollView