def test_files_read(self): # 単一ファイルの場合 with tempfile.NamedTemporaryFile() as fp: filename = fp.name actual = Action.files_read(filename) expected = (Path(filename),) self.assertTupleEqual(actual, expected) # 複数ファイル(json+その他)の場合 tmpdir = tempfile.TemporaryDirectory() jsons = 4 texts = 1 for i in range(jsons): with tempfile.NamedTemporaryFile(suffix='.json') as fp: shutil.copy(fp.name, tmpdir.name) for i in range(texts): with tempfile.NamedTemporaryFile(suffix='.txt') as fp: shutil.copy(fp.name, tmpdir.name) actual = Action.files_read(tmpdir.name, suffix='json') expected = jsons tmpdir.cleanup() self.assertEqual(len(actual), expected) # 指定した拡張子のファイルがディレクトリ内に存在しない場合 # 単一ファイルの場合 with tempfile.NamedTemporaryFile() as fp: with self.assertRaises(SystemExit): _ = Action.files_read(fp.name, suffix='jpg') # ディレクトリにファイルがない場合 with tempfile.TemporaryDirectory() as tmpdir_name: with self.assertRaises(SystemExit): _ = Action.files_read(tmpdir_name) # パスオブジェクトでない場合 with self.assertRaises(SystemExit): _ = Action.files_read('test')
help='Ref is ObjectId or Emb is query list strings.') parser.add_argument('-c', '--compress', action='store_true', help='gzip compress.Default is not compressed.') args = parser.parse_args() # iniファイル読み込み settings = configparser.ConfigParser() settings.read(Path.cwd() / 'ini' / 'db.ini') con = dict([i for i in settings['DB'].items()]) db = DB(con) file = File(db.get_db) # 対象oidの所属コレクションを自動的に取得 ※動作が遅い場合は使用しないこと collection = db.find_collection_from_objectid(args.objectid) # ドキュメント構造の取得 structure = db.get_structure(collection, args.objectid) # クエリの変換 query = Action.file_query_eval(args.query, structure) if file.add_file_reference(collection, args.objectid, Action.files_read(args.path), structure, query, args.compress): print('更新しました') else: print('更新に失敗しました')
# 結果を記録する場合はパスの存在を調べる if args.result_dir is not None: p = Path(args.result_dir) if not p.exists() and not p.is_dir(): sys.exit('パスが不正です') # iniファイル読み込み settings = configparser.ConfigParser() settings.read(Path.cwd() / 'ini' / 'db.ini') con = dict([i for i in settings['DB'].items()]) db = DB(con) jm = JsonManager() convert = Convert() json_files = Action.files_read(args.path, 'json') for file in Action.file_gen(json_files): # Ednman用にjsonをコンバート converted_edman = convert.dict_to_edman(file, mode=args.structure) # コンバート結果を保存する場合 # jm.save({'converted_edman': converted_edman}, args.result_dir, # name='edman_json_list', date=True) # DBへインサート inserted_report = db.insert(converted_edman) if args.result_dir is not None: jm.save({'inserted_report': inserted_report}, args.result_dir, name='inserted',