Filtering large lists and returning values that match a test
The problem with the solution posted in the question is that it goes
through all the possible combinations of two elements in the array
when this is not really needed.

The pseudocode for a more efficient strategy would be as follows:


Read and sort the integers
For each integer (a), calculate the lowest and highest values of (b) that satisfy the inequality
Look for the position in the array for those values (take advantage of the values being ordered, use binary search)
Note that all the numbers between the two positions found satisfy the inequality since they are ordered


In python code, it should be something like this:

import bisect

MIN_SUM_VALUE = -10000
MAX_SUM_VALUE = 10000

with open('large.txt', 'rU') as f:
    integers = sorted(set(int(item) for item in f))

count = 0
for index, a in enumerate(integers):
    # Low and high values of b that still satisfy the inequality
    b_low = MIN_SUM_VALUE - a
    b_high = MAX_SUM_VALUE - a

    # Look for the index in the array for the values above
    b_low_index = bisect.bisect_left(integers, b_low, index + 1)
    b_high_index = bisect.bisect_right(integers, b_high, index + 1)

    # Increment count by the number of values found
    count += b_high_index - b_low_index

print count


Note that the way to avoid repetitions is to restrict the binary search to look for b values whose position is after the a values in the array (that's the index + 1 parameter).

Edit: To get the actual sums printed the following snippet can be used: 

for b_index in range(b_low_index, b_high_index):
    b = integers[b_index]
    print a, b, a + b