As noted by @IceAdor in a comment to @user2902201's solution, rsplit is the simplest solution robust to multiple periods (by limiting the number of splits to maxsplit of just 1 (from the end of the string)).
Here it is spelt out:
file = 'my.report.txt' print file.rsplit('.', maxsplit=1)[0] my.report