I am using `subprocess.run()` for some automated testing. Mostly to automate doing:

```
dummy.exe < file.txt > foo.txt
diff file.txt foo.txt

```

If you execute the above redirection in a shell, the two files are always identical. But whenever `file.txt` is too long, the below Python code does not return the correct result.

This is the Python code:

```python3
import subprocess
import sys

def main(argv):

    exe_path = r'dummy.exe'
    file_path = r'file.txt'

    with open(file_path, 'r') as test_file:
        stdin = test_file.read().strip()
        p = subprocess.run([exe_path], input=stdin, stdout=subprocess.PIPE, universal_newlines=True)
        out = p.stdout.strip()
        err = p.stderr
        if stdin == out:
            print('OK')
        else:
            print('failed: ' + out)

if __name__ == "__main__":
    main(sys.argv[1:])

```

Here is the C++ code in `dummy.cc`:

```c++
#include <iostream>

int main()
{
    int size, count, a, b;
    std::cin >> size;
    std::cin >> count;

    std::cout << size << " " << count << std::endl;

    for (int i = 0; i < count; ++i)
    {
        std::cin >> a >> b;
        std::cout << a << " " << b << std::endl;
    }
}

```

`file.txt` can be anything like this:

```none
1 100000
0 417
0 842
0 919
...

```

The second integer on the first line is the number of lines following, hence here `file.txt` will be 100,001 lines long. 

**Question:** Am I misusing subprocess.run() ? 

**Edit**

My exact Python code after comment (newlines,rb) is taken into account:

```
import subprocess
import sys
import os

def main(argv):

    base_dir = os.path.dirname(__file__)
    exe_path = os.path.join(base_dir, 'dummy.exe')
    file_path = os.path.join(base_dir, 'infile.txt')
    out_path = os.path.join(base_dir, 'outfile.txt')

    with open(file_path, 'rb') as test_file:
        stdin = test_file.read().strip()
        p = subprocess.run([exe_path], input=stdin, stdout=subprocess.PIPE)
        out = p.stdout.strip()
        if stdin == out:
            print('OK')
        else:
            with open(out_path, "wb") as text_file:
                text_file.write(out)

if __name__ == "__main__":
    main(sys.argv[1:])

```

Here is the first diff:

[![enter image description here](https://i.stack.imgur.com/Fk2IW.jpg)](https://i.stack.imgur.com/Fk2IW.jpg)

Here is the input file: <https://drive.google.com/open?id=0B--mU_EsNUGTR3VKaktvQVNtLTQ>