Skip to content

Commit 416ce5d

Browse files
authored
Merge pull request #397 from alcrene/fix/with-open
Fix: Use `with` everywhere to open files
2 parents 4405c2c + d5528a7 commit 416ce5d

6 files changed

Lines changed: 53 additions & 64 deletions

File tree

doc/build_reference.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,15 @@
2424

2525
sys.stdout = sys.__stdout__
2626

27-
f = open("command_reference.txt", "w")
28-
f.write("=====================\n")
29-
f.write("smt command reference\n")
30-
f.write("=====================\n\n")
31-
32-
for mode in modes:
33-
sio = usage[mode]
34-
f.write(mode + '\n')
35-
f.write('-'*len(mode) + '\n::\n\n ')
36-
sio.seek(0)
37-
f.write(" ".join(sio.readlines()) + '\n')
38-
sio.close()
39-
f.close()
27+
with open("command_reference.txt", "w") as f:
28+
f.write("=====================\n")
29+
f.write("smt command reference\n")
30+
f.write("=====================\n\n")
31+
32+
for mode in modes:
33+
sio = usage[mode]
34+
f.write(mode + '\n')
35+
f.write('-'*len(mode) + '\n::\n\n ')
36+
sio.seek(0)
37+
f.write(" ".join(sio.readlines()) + '\n')
38+
sio.close()

sumatra/commands.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -538,9 +538,8 @@ def comment(argv):
538538
args = parser.parse_args(argv)
539539

540540
if args.file:
541-
f = open(args.comment, 'r')
542-
comment = f.read()
543-
f.close()
541+
with open(args.comment, 'r') as f:
542+
comment = f.read()
544543
else:
545544
comment = args.comment
546545

@@ -686,9 +685,8 @@ def upgrade(argv):
686685
project.record_store.clear()
687686
filename = "%s/records_export.json" % backup_dir
688687
if os.path.exists(filename):
689-
f = open(filename)
690-
project.record_store.import_(project.name, f.read())
691-
f.close()
688+
with open(filename) as f:
689+
project.record_store.import_(project.name, f.read())
692690
else:
693691
print("Record file not found")
694692
sys.exit(1)

sumatra/datastore/filesystem.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,11 @@ def __init__(self, path, store, creation=None):
3636
self.mimetype, self.encoding = mimetypes.guess_type(self.full_path)
3737

3838
def get_content(self, max_length=None):
39-
f = open(self.full_path, 'rb')
40-
if max_length:
41-
content = f.read(max_length)
42-
else:
43-
content = f.read()
44-
f.close()
39+
with open(self.full_path, 'rb') as f:
40+
if max_length:
41+
content = f.read(max_length)
42+
else:
43+
content = f.read()
4544
return content
4645
content = property(fget=get_content)
4746

@@ -52,9 +51,8 @@ def sorted_content(self):
5251
cmd = "sort %s > %s" % (self.full_path, sorted_path)
5352
job = Popen(cmd, shell=True)
5453
job.wait()
55-
f = open(sorted_path, 'rb')
56-
content = f.read()
57-
f.close()
54+
with open(sorted_path, 'rb') as f:
55+
content = f.read()
5856
if len(content) != self.size: # sort adds a \n if the file does not end with one
5957
assert len(content) == self.size + 1
6058
content = content[:-1]

sumatra/dependency_finder/matlab.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ def save_dependencies(cmd, filename):
3636

3737
def find_dependencies(filename, executable):
3838
#ifile = os.path.join(os.getcwd(), 'depfun.data')
39-
file_data = (open('depfun.data', 'r'))
40-
content = file_data.read()
41-
paths = re.split('1: ', content)[2:]
42-
list_deps = []
43-
for path in paths:
44-
if os.name == 'posix':
45-
list_data = path.split('/')
46-
else:
47-
list_data = path.split('\\')
48-
list_deps.append(Dependency(list_data[-2], path.split('\n')[0]))
49-
file_data.close() # TODO: find version of external toolboxes
39+
with open('depfun.data', 'r') as file_data:
40+
content = file_data.read()
41+
paths = re.split('1: ', content)[2:]
42+
list_deps = []
43+
for path in paths:
44+
if os.name == 'posix':
45+
list_data = path.split('/')
46+
else:
47+
list_data = path.split('\\')
48+
list_deps.append(Dependency(list_data[-2], path.split('\n')[0]))
49+
# TODO: find version of external toolboxes
5050
return list_deps

sumatra/projects.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,8 @@ def save(self):
157157
state[name][key] = value
158158
else:
159159
state[name] = attr
160-
f = open(_get_project_file(self.path), 'w') # should check if file exists?
161-
json.dump(state, f, indent=2)
162-
f.close()
160+
with open(_get_project_file(self.path), 'w') as f: # should check if file exists?
161+
json.dump(state, f, indent=2)
163162

164163
def info(self):
165164
"""Show some basic information about the project."""
@@ -393,9 +392,8 @@ def export(self):
393392
# copy the project data
394393
shutil.copy(".smt/project", ".smt/project_export.json")
395394
# export the record data
396-
f = open(".smt/records_export.json", 'w')
397-
f.write(self.record_store.export(self.name))
398-
f.close()
395+
with open(".smt/records_export.json", 'w') as f:
396+
f.write(self.record_store.export(self.name))
399397

400398
def repeat(self, original_label, new_label=None):
401399
if original_label == 'last':
@@ -474,9 +472,8 @@ def remove_plugins(self, *plugins):
474472

475473

476474
def _load_project_from_json(path):
477-
f = open(_get_project_file(path), 'r')
478-
data = json.load(f)
479-
f.close()
475+
with open(_get_project_file(path), 'r') as f:
476+
data = json.load(f)
480477
prj = Project.__new__(Project)
481478
prj.path = path
482479
for key, value in data.items():
@@ -502,9 +499,8 @@ def _load_project_from_json(path):
502499

503500
def _load_project_from_pickle(path):
504501
# earlier versions of Sumatra saved Projects using pickle
505-
f = open(_get_project_file(path), 'r')
506-
prj = pickle.load(f)
507-
f.close()
502+
with open(_get_project_file(path), 'r') as f:
503+
prj = pickle.load(f)
508504
return prj
509505

510506

tools/export.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -102,18 +102,17 @@ def export_records(output_file):
102102
store = load_recordstore()
103103
if minor_version < 3:
104104
patch_sumatra()
105-
f = open(output_file, 'w')
106-
if minor_version == 1:
107-
json.dump([encode_record(record) for record in store.list(groups=None)],
108-
f, indent=2)
109-
else:
110-
project_name = projects.load_project().name
111-
if minor_version == 2:
112-
json.dump([encode_record(record) for record in store.list(project_name)],
105+
with open(output_file, 'w') as f:
106+
if minor_version == 1:
107+
json.dump([encode_record(record) for record in store.list(groups=None)],
113108
f, indent=2)
114109
else:
115-
f.write(store.export(project_name))
116-
f.close()
110+
project_name = projects.load_project().name
111+
if minor_version == 2:
112+
json.dump([encode_record(record) for record in store.list(project_name)],
113+
f, indent=2)
114+
else:
115+
f.write(store.export(project_name))
117116

118117

119118
def patch_sumatra():
@@ -172,9 +171,8 @@ def export_project(output_file):
172171
state['record_store']['db_file'] = ".smt/records" #prj.record_store._db_file
173172
else:
174173
state['record_store']['shelf_name'] = ".smt/records" #prj.record_store._shelf_name
175-
f = open(output_file, 'w')
176-
json.dump(state, f, indent=2)
177-
f.close()
174+
with open(output_file, 'w') as f:
175+
json.dump(state, f, indent=2)
178176

179177

180178
if __name__ == "__main__":

0 commit comments

Comments
 (0)