【问题标题】:How do I call a text file to be used in my python terminal script如何调用要在我的 python 终端脚本中使用的文本文件
【发布时间】:2017-03-29 06:52:17
【问题描述】:

我在 python 中编写了一个二进制解码器,但我无法将文本文件通过它。

"""

Date :28/3/17
File Name:binary_to_string.py

"""

import sys


def binary_to_str(binary_string):
    """
    This function take a binary string as argument and convert to string
    :param binary_string: string in 0 or 1 from
    :return:
    """
    bits = 8  # initialize bit to 8 means by default we are assuming  8 bit binary
    # checking  for backslash if we found first 8 bit give backslash then we reassign  bit to 7
    if ord(chr(int(binary_string[:8], 2))) == 145:
        bits = 7

    result_string = ''
    # iterate all group of 7 or 8 character in binary string based on bits
    # and append to result string
    for i in range(0, len(binary_string), bits):
        result_string += chr(int(binary_string[i:i + bits], 2))
    return result_string


def read_file(file_name):
    """
    This function takes file name as input and read file line by line and
    append to binary_str and return it
    :param file_name: 
    :return: 
    """
    binary_str = ''
    with open(file_name, 'r') as f:
        for line in f:
            binary_str += line.strip()
    return binary_str


if __name__ == '__main__':
    input_file = sys.argv[1]
    print(binary_to_str(read_file(input_file)))

我正在尝试传递带有二进制消息的文本文件:

100100011001011101100110110011011110100000101011111011111110010110110011001000100001

位于我的 pythonpractice 文件夹中的文本文件 binary1.txt 以及我的 binary_to_string.py 文件中。

我从终端收到的错误如下:

bthib@bthib-cyberstorm ~ $ cd pythonpractice

bthib@bthib-cyberstorm ~/pythonpractice $ python ./binary_to_string.py > binary1.txt

/usr/bin/python: can't find '__main__' module in './binary_to_string.py'

【问题讨论】:

  • 第二个是你的脚本名称输入不正确造成的。
  • 我意识到我第二次尝试编译时打错了,我再次尝试没有错字,它给出了错误“找不到'main'模块在'./binary_to_string.py'@kindall
  • 这个错误好像你在当前目录中有一个名为'binary_to_string.py'的目录。

标签: python linux terminal


【解决方案1】:

错误// bash: ./binary_to_strong.py: 没有这样的文件或目录: 你有没有在你的 python 脚本中提供一个目录来调用?

可以使用文件对象将你想要的二进制值传递给文本文件

【讨论】:

  • 对不起,错误不再存在,我只是在那个实例上打错了。
  • 你尝试评论那些行,看看是否不再有错误 # if name == 'main': #input_file = sys.argv[1 ] #print(binary_to_str(read_file(input_file))) 这只是为了确认错误发生的位置
  • 你让它工作了吗?我试过你改了,还是一样的错误,要我注释掉最后两行吗?
  • 从 #if name == **** 开始评论,最后三行
  • 我仍然遇到同样的错误,这一定是我的问题,而不是实际代码不正确?
猜你喜欢
  • 2011-02-02
  • 2023-03-27
  • 2016-06-12
  • 2021-07-05
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 2017-10-28
  • 2011-09-02
相关资源
最近更新 更多