Skip to content

Use sys.stdin/sys.stdout instead of io.open(0/1) for better compatibility #29

@rintrint

Description

@rintrint

with io.open(args.input if args.input else 0, encoding=args.in_enc) as f:
input_str = f.read()
output_str = cc.convert(input_str)
with io.open(args.output if args.output else 1, 'w',
encoding=args.out_enc) as f:
f.write(output_str)

Using 0 as a fallback for the input file can lead to a type error since io.open expects a filename. Consider using sys.stdin directly when no input file is provided.

    if args.input:
        with io.open(args.input, encoding=args.in_enc) as f:
            input_str = f.read()
    else:
        input_str = sys.stdin.read()
    output_str = cc.convert(input_str)
    if args.output:
        with io.open(args.output, 'w', encoding=args.out_enc) as f:
            f.write(output_str)
    else:
        sys.stdout.write(output_str)

or

    if args.input:
        with io.open(args.input, encoding=args.in_enc) as f:
            input_str = f.read()
    else:
        if sys.version_info[0] >= 3:
            input_str = sys.stdin.read()
        else:
            sys.stdin.read().decode(args.in_enc)

    output_str = cc.convert(input_str)

    if args.output:
        with io.open(args.output, "w", encoding=args.out_enc) as f:
            f.write(output_str)
    else:
        if sys.version_info[0] >= 3:
            sys.stdout.write(output_str)
        else:
            sys.stdout.write(output_str.encode(args.out_enc))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions