ここで間違っていることはわかりません。 main関数は正常に動作しますが、.txtファイル関数にデータを追加/書き込みすることはできません。私は "NameError:name 'data'が定義されていない"を取得し続けます。スコープの問題だと思いますか?他の機能からのデータを使用
質問:main関数を実行して出力をファイルに書き込むにはどうすればよいですか?メイン関数の出力にアクセスするにはどうすれば他の関数を実行できますか?
ご協力ありがとうございます!
import sys, os
print("\n-------------------------- String HexDump ------------------------------------\n")
def main():
try:
with open(sys.argv[1], 'rb') as file:
for line in range(0, os.path.getsize(sys.argv[1]), 60):
data = file.read(60)
data = str(data)
print(data)
except:
print('Usage: {} <filename>'.format(os.path.basename(sys.argv[0])))
str = lambda data: ''.join(31 < i < 127 and chr(i) or '.' for i in data)
if __name__ == '__main__':
main()
def HexStrFileDump():
with open('HEXDUMPFILE2.txt','wb') as HexFile:
HexFile.write(data)
HexStrFileDump()
'data'はモジュールに対してグローバルでなければなりません。これで 'data'は' main'関数のローカル変数です。グローバル変数を関数にインポートするには、関数の先頭に 'global'キーワードを使います。 – Grimmy
グローバル変数を 'global'でインポートすることなく読み込むことはできますが、グローバル変数に値を代入することはできません。 – Grimmy
https://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created-them – Grimmy